gpt4 book ai didi

javascript - React Hook 表单 Controller 问题

转载 作者:行者123 更新时间:2023-12-03 07:20:17 25 4
gpt4 key购买 nike

我一直在使用带有原生元素的 React Hook 表单库,但想切换到使用 Controller API 的自定义组件。

我的自定义输入组件更新 React 状态但未更新表单状态内的 ref 时遇到问题。因此,必填字段总是被标记为无效,我无法提交表单。

这是我的问题的演示:https://codesandbox.io/s/react-hook-form-controller-bofv5

它应该在提交时注销表单数据 - 但提交永远不会发生,因为表单无效。

最佳答案

我想我已经缩小了您的问题范围。首先,我从 Controller 中删除了 rules={{ required: true }} 并尝试了表单。它告诉我 firstName: undefined。然后我注释掉了 onChange 属性。之后,表格工作正常。如果您想提供自定义值提取器,似乎应该使用 onChange。该值需要从函数返回。一个简单输入的示例如下:onChange={([{target}]) => target.value} reference .此外,请务必注意,handleSubmit 会使用值提取一些内部状态,这样您就无需自己跟踪这些状态。

这个更新的组件似乎在工作:

function App() {
const { control, handleSubmit, errors } = useForm();
// const [data, setData] = useState({ firstName: "" });

const onSubmit = data => console.log(data);

// const onChangeHandler = e => {
// const { name, value } = e.target;
// const _data = { ...data };
// _data[name] = value;
// setData(_data);
// };

return (
<>
{/* <p>{JSON.stringify(data)}</p> */}
<form onSubmit={handleSubmit(onSubmit)}>
<Controller
as={Input}
name="firstName"
id="firstName"
label="First Name"
control={control}
// value={data.firstName}
rules={{ required: true }}
errors={errors.firstName}
// onChange={([e]) => onChangeHandler(e)}
/>

<input type="submit" />
</form>
</>
);
}

请注意,我从来没有使用过这个库,所以只要你能相信我,就相信我。

关于javascript - React Hook 表单 Controller 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61489188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com