Javascript 以react HOOK形式设置从api获取的值
我使用的是React钩子表单,所以我关心的是如何设置React钩子表单中的输入字段中的数据,以便发布数据。我的结构是这样的Javascript 以react HOOK形式设置从api获取的值,javascript,reactjs,react-hooks,react-hook-form,Javascript,Reactjs,React Hooks,React Hook Form,我使用的是React钩子表单,所以我关心的是如何设置React钩子表单中的输入字段中的数据,以便发布数据。我的结构是这样的 <form onSubmit={handleSubmit(onSubmit)}> <IonItem> <IonLabel position="stacked">Full Name</IonLabel>
<form onSubmit={handleSubmit(onSubmit)}>
<IonItem>
<IonLabel position="stacked">Full Name</IonLabel>
<Controller
render={({ onChange, onBlur, value }) => (
<IonInput
onIonChange={onChange}
/>
)}
control={control}
name="email"
defaultValue={state.name}
value={state.name}
rules={{
required: true,
pattern: {
value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
message: "invalid email address",
},
}}
/>
{_.get("email.type", errors) === "pattern" && (
<p className="errorWarning">CHeck email</p>
)}
</IonItem>
</form>
全名
(
)}
control={control}
name=“电子邮件”
defaultValue={state.name}
值={state.name}
规则={{
要求:正确,
模式:{
值:/^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i,
消息:“无效的电子邮件地址”,
},
}}
/>
{{uu.get(“email.type”,errors)=“pattern”&&(
查看电子邮件
)}
但是,如果我必须使用相同的东西,并将其值设置为从api获得的值,该怎么办
为了检查purposr,我尝试用一些值初始化我的状态,比如
州:{name:'yourname'}
但是,当我尝试使用defaultValue道具和value道具在表单中设置此值时,即使console.log(state.name)给我“yourfullname”,它们都不起作用
<Controller
render={({ onChange, onBlur, value }) => (
<IonInput
onIonChange={onChange}
/>
)}
control={control}
name="email"
defaultValue={state.name}
value={state.name}
rules={{
required: true,
pattern: {
value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
message: "invalid email address",
},
}}
/>
(
)}
control={control}
name=“电子邮件”
defaultValue={state.name}
值={state.name}
规则={{
要求:正确,
模式:{
值:/^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i,
消息:“无效的电子邮件地址”,
},
}}
/>
如果您正在使用redux,在将API数据从状态映射到组件中的道具之后
在组件安装时,您需要使用useEffect钩子获取所需的数据,在相同的函数中,检查prop(数据)是否可用,如果可用,则使用setState或类似工具将API数据设置为组件级状态的数据。通过检查道具是否可用以及是否有数据,您可以确保在尝试在表单中使用道具之前返回所需的数据
然后可以将数据从状态传递到表单值或默认值
const[values,setvalues]=useState({
名称:“”
})
useffect(()=>{
异步函数loadData(){
等待请求
}
loadData()
}, [])
useffect(()=>{
如果(apiData){
设定值({
名称:apiData.name,
})
}
},[apiData])
全名
(
)}
control={control}
name=“电子邮件”
defaultValue={values.name}
value={values.name}
规则={{
要求:正确,
模式:{
值:/^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i,
消息:“无效的电子邮件地址”,
},
}}
/>
{{uu.get(“email.type”,errors)=“pattern”&&(
查看电子邮件
)}
你在使用Redux吗?是的,我最终会从我的Redux状态获取所有数据。冷静,等待,我回答。但是为什么我用静态数据手动初始化状态时,我没有显示在输入值中,现在它会显示出来?困惑:)