componentWillReceiveProps

  1. componentWillReceiveProps里面 from.setFieldsValue() 会造成死循环问题
    1. 因为 form内部也调用了 componentWillReceiveProps
    2. setFieldsValue 本质是调用外层 wrapper 的 setState,间接调用 componentWillReceiveProps,所以死循环了
  2. 一定要对比 from的值,不然会死循环
  1. componentWillReceiveProps(nextProps) {
  2. const { data } = nextProps
  3. const { data: beforeData, form } = this.props
  4. const flag = JSON.stringify(data) === JSON.stringify(beforeData)
  5. if (!flag) {
  6. const obj = {}
  7. data.forEach((item, i) => {
  8. obj[`${i}.name`] = item.name
  9. obj[`${i}.expression`] = item.expression
  10. })
  11. form.setFieldsValue(obj)
  12. }
  13. }
  1. form.setFieldsValue这个方法里面传值的时候只能是form中用到的参数
  2. 即是 getFieldDecorator方法中的field,没有的field一律不允许多传,否则就会报错

componentWillUpdate

  1. componentWillUpdate 中 通过 this.setState 修改状态值,大概率会导致死循环
  2. 因为会调用 shouldComponentUpdate
  3. 可以通过 nextProp.propName = * 的方式进行修改,不会有无限循环的问题

子组件 props接收的值 undefined

read-only 死循环

  1. 修改只读的值,会造成死循环

image.png