You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React TypeScript:解决react-hook-form提交时Property does not exist报错

错误原因分析

你遇到的错误是因为data.participants的类型是对象数组(从你的schema和types定义能看到,它是z.object(...).array().optional()和{...}[]),但你在onSubmit里直接尝试访问data?.participants?.id、data?.participants?.email——数组本身没有这些属性,只有数组里的每个元素(单个参与者对象)才有,所以TypeScript抛出了类型错误。

修复方案

根据你的业务需求,分两种情况处理:

情况1:表单仅收集单个参与者信息

如果你的表单只需要添加一个参与者,先修正类型定义,把participants从数组改成单个可选对象:

1. 修改schema.ts

export const schemaForShareSurveyEmail = z.object({
  id: z.string().optional(),
  subject: z.string().optional(),
  message: z.string().optional(),
  // 去掉.array(),改为单个可选对象
  participants: z.object({
      id: z.string().optional(),
      email: z.string().optional(),
      latitude: z.string().optional(),
      longitude: z.string().optional(),
  }).optional(),
});

2. 修改types.ts

export type SharesurveyEmailPayload = {
  id?:string;
  message?: string;
  subject?: string;
  // 去掉数组符号[],改为单个可选对象
  participants?:{
    id?: string | any,
    email?: string | any,
    latitude?: string | any,
    longitude?: string | any
  };
};

3. 调整onSubmit代码

如果createForm要求participants是数组,就把单个对象包装成数组;如果允许单个对象,直接传入即可:

const onSubmit = (data: SchemaEmailShareSurvey) => {
  createForm({
    id: data?.id,
    message: data?.message,
    subject: data?.subject,
    // 把单个participant包装成数组(适配createForm的参数要求)
    participants: data.participants ? [data.participants] : [],
  });
};

情况2:表单需要收集多个参与者信息

如果你的表单支持添加多个参与者,onSubmit里需要遍历data.participants数组,取出每个元素的属性:

const onSubmit = (data: SchemaEmailShareSurvey) => {
  createForm({
    id: data?.id,
    message: data?.message,
    subject: data?.subject,
    // 遍历数组,转换每个参与者对象
    participants: data.participants?.map(participant => ({
      id: participant.id,
      email: participant.email,
      latitude: participant.latitude,
      longitude: participant.longitude
    })) || [], // 处理数组为空或undefined的情况
  });
};

这样就能匹配SharesurveyEmailPayload里participants的数组类型,TypeScript的错误也会消失。

内容的提问来源于stack exchange,提问作者user15361826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:10:34