ANTD的表单具有setFields值函数。因此,我使用该函数从API调用中设置窗体的默认值。在脉轮ui中是否有相同的功能?当第一次呈现屏幕时,我希望表单中的输入用通过API调用接收到的值填充。Chakra UI的文档推荐使用Formik,但是有没有更好的方法呢?我知道有一种方法可以用Formik的initialValue来实现这一点。但我在找更好的方法。
qoefvg9y1#
Chakra中的FormControl的范围只是提供一些上下文,通过isDisabled,isInvalid等(https://chakra-ui.com/docs/components/form-control/props)帮助表单元素的样式化。至于表单管理,您应该使用单独的库,如react-hook-form使用react-hook-form,您只需将表单数据直接register到Chakra表单元素组件上,例如Input,而不是FormControl
isDisabled
isInvalid
react-hook-form
register
const { register, } = useForm({ defaultValues: { name: 'Joe Bloggs' } }) ... <Input {...register('name')} />
字符串如果你是基于API设置默认值,我建议你在父组件中获取数据,只有当你有数据并通过props传递它时才呈现包含表单的组件,因为defaultValues只在表单的第一次呈现时设置。例如,使用react-query
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' }
型
1条答案
按热度按时间qoefvg9y1#
Chakra中的FormControl的范围只是提供一些上下文,通过
isDisabled
,isInvalid
等(https://chakra-ui.com/docs/components/form-control/props)帮助表单元素的样式化。至于表单管理,您应该使用单独的库,如
react-hook-form
使用
react-hook-form
,您只需将表单数据直接register
到Chakra表单元素组件上,例如Input,而不是FormControl字符串
如果你是基于API设置默认值,我建议你在父组件中获取数据,只有当你有数据并通过props传递它时才呈现包含表单的组件,因为defaultValues只在表单的第一次呈现时设置。
例如,使用
react-query
型