现在主要是用 ant proform 来处理表单,
table 传进来的 props -> 我重新用[merge,setMerge] =usestate(props)包裹了下 mergeState, 然后在具体的某个定义的 editForm 里进行修改。然后涉及一些表单联动的(改了一个表单的值,影响另一个表单属性),我又写了个 [formState,setFormState]=usestate,主要感觉自己写的怪怪的。
我现在理想的是想写一些 form 的 hooks, {requestForm}=useFormRequest() {props} =useFormColumn() 传到<MyForm props={requestForm} >,苦于不知道如何封装。请教下大佬们哪里有这方面的资料,或者关键词。
1
idealist 2022-07-29 09:24:52 +08:00
我记得 antd 的 Form 不是内部处理状态吗?不需要自己维护状态
|
2
happyeveryday 2022-07-29 09:42:49 +08:00
用 ant 那套 form 就不应该自己处理 state 了啊,就算需要关联的改变操作,还是用 form.setFiledValues 去设置呀
|
3
hua123s 2022-07-29 09:44:48 +08:00 1
|
4
zhangleshiye OP @hua123s 我试试谢谢
|
5
carrymaniac 2022-07-29 10:48:05 +08:00
应该在 Form 的 onChange 去做相对应的处理,使用了 form 表单就不应该用受控组件的写法了
|
6
zhangleshiye OP @carrymaniac 嗯 我看官方是推荐用 onValueChange 里集中修改 不过感觉使用起来还是很痛啊
|
7
jsun969 2022-07-29 18:31:13 +08:00
可以试一下 react hook form 哦
类型安全 很优雅地管理复杂表单 GitHub: https://github.com/react-hook-form/react-hook-form 官网: https://react-hook-form.com/ |
8
gouan 2022-08-05 15:15:07 +08:00
@hua123s 其实使用自定义表单控件性能更好点,如果表单比较复杂嵌套,shouldupdate 性能不好,接受 value,onchange,value:{name:'xxxx',useMode:''},你上面的 label 直接{value.name}合同 xxx 。
|