React.js:更新表单后,无法在组件内部获取更新值(`componentWillReceive`)

时间:2018-11-24 22:23:10

标签: javascript reactjs redux state

我们从服务器获取了一个允许用户进行编辑的表单,并使用lodash _.set(object, path, value)来更新表单的某些部分,具体取决于用户更新表单的哪一部分。

我们正在尝试通过设置组件内部的状态来获取当前值,但会出现此错误;

Uncaught Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops

我们的功能如下;

onChange = ({ form }) => {
const { path, editKeyword } = this.props;
const inputValue = form[editKeyword];

let prevForm = this.props.form;

// update the object using
const updatedForm = _.set(prevForm, path, inputValue);

// action
this.props.setCurrentForm(updatedForm); };

我们也尝试了以下运气:

onChange = ({ form }) => {
const { path, editKeyword } = this.props;
const inputValue = form[editKeyword];
console.log("input value ", inputValue);

let prevForm = this.props.form;

const updatedForm = _.set(prevForm, path, inputValue);

// when we try to update local state
this.setState({ form: updatedForm}) };

有人有运气吗?

1 个答案:

答案 0 :(得分:0)

您的.row{ padding: 0 15px; } .col-md-6 { padding: 0; } 函数在某些表单值更改时触发。我不知道函数onChange的作用,但是如果它使与表单相关的数据发生突变,我们这里将出现无限循环。 用户更改表单文本值后,setCurrentForm触发并运行onChange函数。最后一个变异形式的文本值和setCurrentForm函数再次被触发。我认为这是问题所在。