Reactjs 如何使用离子模式内的反应钩形式?
我试图在我的离子反应应用程序中使用反应钩子形式。我使用这个简单的表单:Reactjs 如何使用离子模式内的反应钩形式?,reactjs,typescript,ionic-framework,react-hook-form,Reactjs,Typescript,Ionic Framework,React Hook Form,我试图在我的离子反应应用程序中使用反应钩子形式。我使用这个简单的表单: const Form: React.FC<{ color: string }> = ({ color }) => { const { handleSubmit, register } = useForm(); const onSubmit = (data: any) => { console.log(`%c${JSON.stringify(data)}`, `color: ${col
const Form: React.FC<{ color: string }> = ({ color }) => {
const { handleSubmit, register } = useForm();
const onSubmit = (data: any) => {
console.log(`%c${JSON.stringify(data)}`, `color: ${color}`);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input ref={register} name="name" type="text" />
<input ref={register} name="surname" type="text" />
<input type="submit" />
</form>
);
};
如果我提交第一个表单,数据将正确打印在控制台中,但如果我在IonModal组件中提交第二个表单,则数据不会正确打印。
显示此行为的示例。请参阅此处的工作示例 我能够从react hook表单中使用它 { 返回所选的.detail.value; }} />
这里有完整的博客帖子参见这里的工作示例 我能够从react hook表单中使用它 { 返回所选的.detail.value; }} />
这里有完整的博客帖子我在这里遇到了一些类似的情况,我通过使用OnOnChange调用onChange的值呈现OnInput来解决它,我们需要:
<Controller
render={({ onChange, value }) => (
<IonInput
value={value}
type="tel"
placeholder="AA"
onIonChange={(e: CustomEvent<InputChangeEventDetail>) =>
onChange(
String(e.detail.value!).length < 2
? `0${e.detail.value!}`
: e.detail.value!
)
}
/>
)}
rules={{
required: true,
}}
name="expiryMonth"
control={control}
/>
我们没有改变控制器组件中的值,而是得到改变后的值,并在OnOnChange函数中进行处理,然后将结果值传递给Controllercomponent的更改方法。我在这里遇到了一些类似的情况,我通过使用OnOnChange调用onChange来呈现IonInput,并使用我们需要的值来解决这个问题:
<Controller
render={({ onChange, value }) => (
<IonInput
value={value}
type="tel"
placeholder="AA"
onIonChange={(e: CustomEvent<InputChangeEventDetail>) =>
onChange(
String(e.detail.value!).length < 2
? `0${e.detail.value!}`
: e.detail.value!
)
}
/>
)}
rules={{
required: true,
}}
name="expiryMonth"
control={control}
/>
我们没有改变控制器组件中的值,而是得到改变后的值,并在onIonChange函数中进行处理,并将结果值传递给Controllercomponent的更改方法。当使用从v6.0+开始的react-hook表单与版本5.7.2或以下更新的示例一起使用时,这将不起作用-感谢快速发布。当使用从v6.0+开始的react-hook表单与版本5.7.2或以下更新的示例一起使用时,这将不起作用-谢谢快贴。