react-hook-form v7.34.2中Controller组件的as属性为何不存在?
解决react-hook-form v7.34.2 Controller组件的
as属性类型错误 react-hook-form v7的Controller组件没有as这个属性,这就是你遇到类型错误的原因。v7版本里,Controller提供了两种正确的方式来关联自定义输入组件:
方式1:使用component属性直接传入组件
如果你的TextField组件能直接接收react-hook-form提供的field props(比如value、onChange),可以直接用component属性:
<Stack spacing={2.5}> <Controller component={TextField} control={control} name={`${prefix}.address`} label={`${labelPrefix}`} error={error} helperText={helperText} rules={/* 你的校验规则 */} /> </Stack>
方式2:使用render回调自定义渲染(更灵活)
如果需要根据表单状态动态调整组件属性(比如根据校验结果设置错误状态),推荐用render回调:
<Stack spacing={2.5}> <Controller control={control} name={`${prefix}.address`} rules={/* 你的校验规则 */} render={({ field, fieldState }) => ( <TextField {...field} label={`${labelPrefix}`} error={!!fieldState.error} helperText={fieldState.error?.message || helperText} /> )} /> </Stack>
这种方式里,field包含了输入组件需要的核心props(value、onChange、onBlur),fieldState里的error可以直接用来判断当前字段是否校验失败,不需要单独维护error状态。
内容的提问来源于stack exchange,提问作者khteh
相关产品推荐
相关产品推荐

