我们从服务器获取了一个允许用户进行编辑的表单,并使用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}) };
有人有运气吗?
答案 0 :(得分:0)
您的.row{
padding: 0 15px;
}
.col-md-6 {
padding: 0;
}
函数在某些表单值更改时触发。我不知道函数onChange
的作用,但是如果它使与表单相关的数据发生突变,我们这里将出现无限循环。
用户更改表单文本值后,setCurrentForm
触发并运行onChange
函数。最后一个变异形式的文本值和setCurrentForm
函数再次被触发。我认为这是问题所在。