V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhangleshiye

请教下关于 react 表单处理相关的优化

  •  
  •   zhangleshiye · Jul 29, 2022 · 2166 views
    This topic created in 1368 days ago, the information mentioned may be changed or developed.

    现在主要是用 ant proform 来处理表单,

    table 传进来的 props -> 我重新用[merge,setMerge] =usestate(props)包裹了下 mergeState, 然后在具体的某个定义的 editForm 里进行修改。然后涉及一些表单联动的(改了一个表单的值,影响另一个表单属性),我又写了个 [formState,setFormState]=usestate,主要感觉自己写的怪怪的。

    我现在理想的是想写一些 form 的 hooks, {requestForm}=useFormRequest() {props} =useFormColumn() 传到<MyForm props={requestForm} >,苦于不知道如何封装。请教下大佬们哪里有这方面的资料,或者关键词。

    9 replies    2022-08-05 17:53:31 +08:00
    idealist
        1
    idealist  
       Jul 29, 2022
    我记得 antd 的 Form 不是内部处理状态吗?不需要自己维护状态
    happyeveryday
        2
    happyeveryday  
       Jul 29, 2022
    用 ant 那套 form 就不应该自己处理 state 了啊,就算需要关联的改变操作,还是用 form.setFiledValues 去设置呀
    hua123s
        3
    hua123s  
       Jul 29, 2022   ❤️ 1
    联动应该用 shouldUpdate => formRef.getFieldFormatValue(namePath) 来获取值,你用法就错了。
    zhangleshiye
        4
    zhangleshiye  
    OP
       Jul 29, 2022
    @hua123s 我试试谢谢
    carrymaniac
        5
    carrymaniac  
       Jul 29, 2022
    应该在 Form 的 onChange 去做相对应的处理,使用了 form 表单就不应该用受控组件的写法了
    zhangleshiye
        6
    zhangleshiye  
    OP
       Jul 29, 2022
    @carrymaniac 嗯 我看官方是推荐用 onValueChange 里集中修改 不过感觉使用起来还是很痛啊
    jsun969
        7
    jsun969  
       Jul 29, 2022
    可以试一下 react hook form 哦
    类型安全 很优雅地管理复杂表单
    GitHub: https://github.com/react-hook-form/react-hook-form
    官网: https://react-hook-form.com/
    gouan
        8
    gouan  
       Aug 5, 2022
    @hua123s 其实使用自定义表单控件性能更好点,如果表单比较复杂嵌套,shouldupdate 性能不好,接受 value,onchange,value:{name:'xxxx',useMode:''},你上面的 label 直接{value.name}合同 xxx 。
    hua123s
        9
    hua123s  
       Aug 5, 2022
    @gouan 新版本有和 react-hook-form 差不多的 api 了,可以不用这些乱七八杂的方法了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1490 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 16:56 · PVG 00:56 · LAX 09:56 · JFK 12:56
    ♥ Do have faith in what you're doing.