В componentWillReceiveProps проекта переключиться на getDerivedStateFromProps

  В течение длительного периода времени, функции жизненного цикла componentWillReceiveProps это единственный способ быть обновлен после ответа реквизита изменения.

  реагирующие планы 17.0 удалены componentWIllMount, componentWillReceiveProps и componentWillUpdate. С тех пор, только имя нового жизненного цикла «UNSAFE_» является действительным.

  Он будет использоваться в проекте, чтобы заменить componenetWillReceiveProps вещи getDerivedStateFromProps также быть в процессе. Во-первых подавлено исходный код метода:

Класс Index расширяет React.Component {
  конструктор (реквизит) {
    супер (реквизит);
    это .state = {
      UserList: [],
      editInfo: {имя: "", ParentID: нуль , ManagerID: "", идентификатор: "" }
    };
  }

    componentWillReceiveProps (nextProps) {
    если ( это .props.editInfo.id ==! nextProps.editInfo.id) {
       этой .props.form.setFieldsValue ({имя: nextProps.editInfo.name, 'пользователя' : nextProps.editInfo.managerId})
    }
  }  

}

  Официальная документация обновления говорит: «и componentDidUpdate вместе, этот новый жизненный цикл (getDerivedStateFromProps) должен охватывать все случаи использования componentWillReceiveProps старого.»

  getDerivedStateFromProps может получить обновление реквизита, но прямая замена пришла, this.props ошибки доступа. Вы можете только изменить состояние, и componenetDidUpdate может контролировать состояние до модификации. Я здесь и относительно много, а затем изменить форму по форме this.props. Код выглядит следующим образом:

  статические getDerivedStateFromProps (реквизит, состояние) {
    если (props.editInfo.id! == state.editInfo.id) {
      вернуть {
        editInfo: props.editInfo
      };
    }

    возвращать нуль;
  }

  componentDidUpdate (prevProps, prevState) {
    если (this.state.editInfo.id! == prevState.editInfo.id) {
      this.props.form.setFieldsValue ({
        имя: this.state.editInfo.name,
        Пользователь: this.state.editInfo.managerId
      });
    }
  }

  Но! Старое componentWillReceiveProps или новые getDerivedStateFromProps увеличили сложность компонентов, как правило, приводит к ряду ошибки неожиданной.

  https://zh-hans.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

  Этот документ больше мыслей как для подхода на основе жизненного цикла, вы можете ссылаться.

рекомендация

отwww.cnblogs.com/wlxll/p/11828286.html