antd state使用_ANTD form实现

中秋几天 玩 看电影 聊天 还不错

之前重构有需求是需要获取保存子组件的部分值,antd的表单有相同的需求,参考下

1.因为没自己写,看之前先猜,简单的想了下实现方式,

首先 定义初始值 --+ 修改值 --+ 获取保存值

最基本的就是上面三个功能, 定义初始值 再加上React的声明式语法,需要返回onChange 与 value ,id, onChange可以被调用来修改之前保存的值,

自己的实现方式 当然是通过state的方式 直接一state ={ fields :{}},将所有表单项都保存再 fields里面比如fields[name]的格式, 再调用onChange 也通过this.state来修改fields[name]的值, 最后获取保存值 最简单也通过const { fields } = this.state; 来获取, 这样会存在一个问题,就是state会变的比较复杂,如果每次都修改都需要 将所有需要的state保存下来,如果结构比较深,还或造成不更新的问题,需要调用 forceUpdate,同样的也会造成多次re-render,

在我上次重构也是这样做的,

antd的做法是直接利用类属性 getInitialState 直接this.fields = {}, 其他时候就直接修改fields的属性,这样的好处就是避免了state的操作,以及render更新的问题,但为什么觉得这样的做法很不react,因为这种做法没有很好的界定了在不同的状态间数据的变化,但因为这是一个外部库,所以也是没什么问题的这个库整体就是一个输入口, 外面的表单项在控制着状态来修改展示不同状态下的数据,

这时候所谓的通过state来控制ui变化或者苛求单项数据流是否有必要getFieldProps用于和表单进行双向绑定 就是上面的做法

setFields forceUpdate 如果没有forceUpdate ,因为antd上面的做法,就不会触发re-render,可能通常使用setFields时 用来输入整组的值,这时候界面默认值或者value等展示也相应的发生变化,那么如果没有forceUpda,那么整个界面,数据就不会更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值