最新的react-redux和redux-form导致严重的性能问题

问题描述

升级到最新版本(截至今天):

react-redux: 5.0.7 --> 7.2.1
redux-form: 7.4.2 --> 8.3.6

这样做之后,在排序,在字段中键入内容等时,会发现性能显着下降,最终出现以下错误,这会破坏应用程序:

错误:超出最大更新深度。当一个组件发生这种情况 重复调用componentwillUpdate内的setState或 componentDidUpdate。 React将嵌套更新的数量限制为 防止无限循环。

上述错误发生在

中 组件:...

唯一要做的就是升级代码保持不变。

这是withForm HOC的代码段并进行连接(根据文档定义)

 const withForm = reduxForm({
   form: 'form-name',initialValues: {
     ...initVals
   },onSubmit,validate,shouldError: () => true
 });

 export default compose(
   connect,withForm,withStyles(styles)
 )(MyComponent);

 

有人知道这可能是什么问题吗?

解决方法

出于某种原因升级到最新表单(请参阅问题)后,redux-form对我如何显式重置表单属性不满意。

const connectForm = reduxForm({
  form: 'form-name',validate: values => {
    const errors = {};
    if (values.middle) {
      values.first = '';
    } else {
      values.second = ''
      values.third = '';
    }
  },destroyOnUnmount: false,initialValues: {
    ...initValues
  }
});

因此产生了堆栈溢出。

使用内置的重置功能重置那些

import {reset} from 'redux-form';

...

dispatch(reset('myForm'));  // requires form name

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...