antd 处理超大型表单的问题

比如说一个超大型的表单,每个表单项item都被getFieldDecorator给包裹一层,因为被包裹住的输入组件的onChange事件会触发连带着触发Form.create这层组件上的forceUpdate,因此整个表单都会被重新render
这个时候如果触发onChange事件的是Input组件,显而易见就会开始卡顿

这里最简单的办法就是将这个表单给拆成好几个组件,每个组件上单独放一个Form.create,这样就能避免整个表单被重新render了
还找到一个antd-react-form-builder,看readme是解决了一部分问题,具体还未详细使用

请问,还有没有其他的办法?

阅读 7.6k
3 个回答
新手上路,请多包涵

可以给onchange加上debounce,目前已跑通,但是表单校验会有问题

一直忘了自己提的这个问题了

后面我们处理办法很简单,在每个表单项组件上面再套一层用来检测表单项是否需要改变,保证如果value没有change的话,这个表单项不会被rerender即可

当然表单项特别多的时候还是能够感觉到卡顿,但可以忍受

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题