尝试在 Ionic React 项目中使用 IonInput。
<IonInput { ...props } { ...register(props.name, { required, ...requiredOptions }) } />
完整代码:
const { register, handleSubmit, formState: { errors } } = useForm({
mode: "onTouched",
reValidateMode: "onChange"
});
const fields = [
{
label: "Firstname",
required: true,
requiredOptions: {
maxLength: 10
},
props: {
name: "firstname",
type: "text",
placeholder: "Enter a username"
}
},
{
label: "Age",
required: true,
requiredOptions: {
min: 18,
max: 99
},
props: {
name: "age",
type: "number",
inputmode: "numeric",
placeholder: "Enter your age"
}
}
];
console.log(errors);
const onSubmit = (data : any) => {
console.log(data);
}
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>React Hook Form</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent fullscreen>
<IonHeader collapse="condense">
<IonToolbar>
<IonTitle size="large">React Hook Form</IonTitle>
</IonToolbar>
</IonHeader>
<IonCardSubtitle className="ion-text-center ion-margin">An example using React Hook Form</IonCardSubtitle>
<form onSubmit={ handleSubmit(onSubmit) }>
{ fields.map((field, index) => {
const { label, required, requiredOptions, props } = field;
return (
<IonItem key={ `form_field_${ index }` } lines="full">
<>
<IonLabel position="fixed">{ label }</IonLabel>
<IonInput { ...props } { ...register(props.name, { required, ...requiredOptions }) } />
</>
{ required && errors[props.name] && <IonIcon icon={ alertCircleOutline } color="danger" /> }
</IonItem>
);
})}
<IonButton type="submit" className="ion-margin-top" expand="full">Submit</IonButton>
</form>
</IonContent>
</IonPage>
);
IonInput
会得到这个错误:
类型'{ onChange:ChangeHandler; onBlur:更改处理程序;参考:RefCallBack;名称:字符串;min?: 字符串 | 号码 | 不明确的; 最大?:字符串 | 号码 | 不明确的; ... 7 更多 ...; 输入模式?:未定义;} | { ...; }' 不可分配给类型 'IntrinsicAttributes & IonInput & Pick<HTMLAttributes, "onBlur" | "onChange" | ... 250 更多 ... | "onTransitionEndCapture"> & StyleReactProps & RefAttributes<...>'。类型'{ onChange:ChangeHandler; onBlur:更改处理程序;参考:RefCallBack;名称:字符串;min?: 字符串 | 号码 | 不明确的; 最大?:字符串 | 号码 | 不明确的; ... 7 更多 ...; 输入模式?:未定义;}' 不可分配给类型 'IonInput'。属性“max”的类型不兼容。键入'字符串 | 号码 | 不明确的' 不能分配给类型 'string | 不明确的'。类型 'number' 不可分配给类型 'string | 不明确的'。
我的依赖:
- @ionic/react": "^6.0.0"
- 反应钩形”:“^7.27.0”
我通过互联网做了一些研究,但没有得到解决。有人可以帮忙吗?此外,还有其他适合离子项目的表单框架吗?谢谢!!