reactjs 脉轮UI有setFields Value函数吗?

jm2pwxwz  于 8个月前  发布在  React
关注(0)|答案(1)|浏览(81)

ANTD的表单具有setFields值函数。
因此,我使用该函数从API调用中设置窗体的默认值。
在脉轮ui中是否有相同的功能?
当第一次呈现屏幕时,我希望表单中的输入用通过API调用接收到的值填充。
Chakra UI的文档推荐使用Formik,但是有没有更好的方法呢?
我知道有一种方法可以用Formik的initialValue来实现这一点。
但我在找更好的方法。

qoefvg9y

qoefvg9y1#

Chakra中的FormControl的范围只是提供一些上下文,通过isDisabledisInvalid等(https://chakra-ui.com/docs/components/form-control/props)帮助表单元素的样式化。
至于表单管理,您应该使用单独的库,如react-hook-form
使用react-hook-form,您只需将表单数据直接register到Chakra表单元素组件上,例如Input,而不是FormControl

const {
  register,
} = useForm({
   defaultValues: {
      name: 'Joe Bloggs'
   }
})

...
<Input {...register('name')} />

字符串
如果你是基于API设置默认值,我建议你在父组件中获取数据,只有当你有数据并通过props传递它时才呈现包含表单的组件,因为defaultValues只在表单的第一次呈现时设置。
例如,使用react-query

function Parent(){
   const { data, isLoading, isError } = useQuery(...)

   if(isLoading) return <Loading />
   if(isError) return <Error />
   
   return <MyForm defaultValue={data}/>
}

function MyForm({ defaultValue }){
   const {
      register,
   } = useForm({
      defaultValues: defaultValue // { name: 'Joe Bloggs' }
   })

   ...
   <Input {...register('name')} /> // <-- value = 'Joe Bloggs'
}

相关问题