reactjs - React Hook Forms + Material UI 复选框

标签 reactjs material-ui react-hook-form

使用 React Hook Form 和 material-ui 复选框组件提交表单构建时出现错误。复选框的数量是从我的 api 列表中构建的:

        <Grid item xs={12}>
          <FormControl
            required
            error={errors.project?.stack ? true : false}
            component='fieldset'>
            <FormLabel component='legend'>Tech Stack</FormLabel>
            <FormGroup>
              <Grid container spacing={1}>
                {techs.map((option, i) => (
                  <Grid item xs={4} key={i}>
                    <FormControlLabel
                      control={
                        <Checkbox
                          id={`stack${i}`}
                          name='project.stack'
                          value={option.id}
                          inputRef={register({required: 'Select project Tech Stack'})}
                        />
                      }
                      label={option.name}
                    />
                  </Grid>
                ))}
              </Grid>
            </FormGroup>
            <FormHelperText>{errors.project?.stack}</FormHelperText>
          </FormControl>
        </Grid>

提交表单时,我收到以下错误(多次,每个复选框呈现 1 个):

Uncaught (in promise) Error: Objects are not valid as a React child (found: object with keys {type, message, ref}). If you meant to render a collection of children, use an array instead.



我不明白这个错误。该消息显然表明这是一个渲染问题,但组件渲染良好。问题发生在提交。有什么建议吗?

谢谢

最佳答案

更新 : 如果你使用 RHF >= 7,你应该使用 props.field调用 props.field.valueprops.field.onChange .

您可以使用默认的复选框 Controller :

<FormControlLabel
    control={
      <Controller
        name={name}
        control={control}
        render={(props) => (
          <Checkbox
            {...props}
            checked={props.value}
            onChange={(e) => props.onChange(e.target.checked)}
          />
        )}
      />
    }
    label={label}
  />
我使用了 RHF 的 Controller 示例,但必须添加 checked={props.value} :
https://github.com/react-hook-form/react-hook-form/blob/master/app/src/controller.tsx

关于reactjs - React Hook Forms + Material UI 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62291962/

相关文章:

javascript - 可以使用useRef钩子(Hook)清空输入值吗?

reactjs - react-hook-form v7 `watch` 输入 typescript ?

reactjs - 使用 react 路由器重定向后重新渲染组件

javascript - 如何识别数组的某个对象id来改变同一对象中元素的状态?

javascript - 如何使用react实现导航栏

javascript - 如何用阿芙罗狄蒂覆盖 material-ui 类名?

javascript - Material-UI TextField 失去对每个 onChange 的关注

javascript - react-hook-form:handleSubmit 不是函数

ajax - this.IsMounted() 不是一个函数

javascript - 尝试在 chrome 源选项卡中访问 "this.state"。我不确定