【发布时间】:2020-01-14 08:19:43
【问题描述】:
需要通过点击注册来将填写字段的对象转移到状态dataChanged
https://codesandbox.io/s/validation-devextreme-form-fso31
问题在于设置dataChanged 状态时的onFieldDataChanged 属性。错误:
已超过最大更新深度。这可能发生在组件 在 componentWillUpdate 内重复调用 setState 或 组件更新。 React 将嵌套更新的数量限制为 防止无限循环
<Form
formData={customer}
readOnly={false}
showColonAfterLabel={true}
showValidationSummary={true}
validationGroup="customerData"
onFieldDataChanged={e => {
let newData = e.component.option("formData");
this.setState({
dataChanged: newData
});
}}
>
【问题讨论】:
-
我在回调中删除了
console.log('field data changed', e.component.option("formData")),似乎对我有用,我看到它是在字段模糊时触发的。你有完整的重现步骤列表吗? -
我没有。在codesanbox上运行正常,但是在本地项目中出现这个错误,虽然一切都一样
-
它们是否完全相同,所有版本的反应,本地
package.json文件中的所有内容都与您的沙箱相同?您的组件代码没有使用componentWillUpdate或componentDidUpdate生命周期函数。错误/警告是否还有更多信息,例如堆栈跟踪,可以帮助确定错误的来源? -
完全一样。 “this.setState({dataChanged: newData});”行出错
标签: javascript reactjs devexpress devextreme