- componentWillReceiveProps里面 from.setFieldsValue() 会造成死循环问题
- 因为 form内部也调用了 componentWillReceiveProps
- setFieldsValue 本质是调用外层 wrapper 的 setState,间接调用 componentWillReceiveProps,所以死循环了
- 一定要对比 from的值,不然会死循环
componentWillReceiveProps(nextProps) {
const { data } = nextProps
const { data: beforeData, form } = this.props
const flag = JSON.stringify(data) === JSON.stringify(beforeData)
if (!flag) {
const obj = {}
data.forEach((item, i) => {
obj[`${i}.name`] = item.name
obj[`${i}.expression`] = item.expression
})
form.setFieldsValue(obj)
}
}
- form.setFieldsValue这个方法里面传值的时候只能是form中用到的参数
- 即是 getFieldDecorator方法中的field,没有的field一律不允许多传,否则就会报错
componentWillUpdate
- 在 componentWillUpdate 中 通过 this.setState 修改状态值,大概率会导致死循环
- 因为会调用 shouldComponentUpdate
- 可以通过 nextProp.propName = * 的方式进行修改,不会有无限循环的问题
子组件 props接收的值 undefined
read-only 死循环
- 修改只读的值,会造成死循环