Проблема componentDidMount устанавливает состояние вроде DidUpdate - PullRequest
0 голосов
/ 12 апреля 2019

Я хотел бы использовать мой "componentDidMount" в качестве "componentDidUpdate". Я хотел бы иметь возможность заполнить

this.state.libelle_prerequis

как

this.setState ({libelle_prerequis: this.state.donnees.libelle_prerequis });

donnes = {id: 1, libelle_prerequis: "dde"}

  constructor(props) {
    super(props);
    this.state = {
      donnees: '',
      libelle_prerequis: '',
      error: '',
    };
  }

  componentDidUpdate(prevsProp) {
    if (prevsProp.store !== this.props.store) {
      this.setState({
        donnees: this.props.store.libellesprerequis.find((p) => p.id == this.props.libelleprerequis.match.params.id),
      });
      this.setState({ libelle_prerequis: this.state.donnees.libelle_prerequis });
    }
  }

  componentDidMount() {
    this.setState(() => ({
      donnees: this.props.store.libellesprerequis.find((p) => p.id == this.props.libelleprerequis.match.params.id),
    }));
  }

  render() {
    <input
      className="form-control"
      type="text"
      placeholder="Libellé"
      autoFocus
      value={this.state.libelle_prerequis ? this.state.donnees.libelle_prerequis : ''}
      onChange={this.onLibellePrerequisChange}
    />;
  }

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете сделать что-то вроде этого:

 getDonnees = () => {
  const { store, libelleprerequis } = this.props;
  return store.libellesprerequis.find((p) => p.id == libelleprerequis.match.params.id);
}

componentDidUpdate(prevsProp) {
  if (prevsProp.store !== this.props.store) {
    const donnees = this.getDonnees();
    this.setState({
      donnees,
      libelle_prerequis: donness ? donnees.libelle_prerequis : ''
    });
  }
}

componentDidMount() {
  const donnees = this.getDonnees()
  this.setState({
    donnees
  });
}

Вы также можете добавить проверки, чтобы увидеть, найден donnees или нет.Предполагая, что donness является константой, значение которой не будет изменено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...