ReactJs реквизит возвращает неопределенное значение в componentDidMount - PullRequest
0 голосов
/ 30 января 2020

У меня проблема с моим реквизитом.

в моем классе, если я:

<Input type="text" name="firstName" id="firstName" placeholder="First Name" value={this.props.user.firstName}/>

, который работает, появляется мое firstName.

, но если Я пытаюсь:

componentDidMount = () => {
    console.log("firstName : "+this.props.user.firstName)
 }

, который возвращает меня undefined, кто-нибудь может мне помочь?

1 Ответ

5 голосов
/ 30 января 2020

Во-первых, componentWillReceiveProps устарела. Поэтому вы можете добавить UNSAFE_ к имени метода. Примечание из документации :

Примечание

Этот жизненный цикл ранее назывался componentWillReceiveProps. Это имя будет работать до версии 17. Используйте кодовый код rename-unsafe-lifecycles для автоматического обновления ваших компонентов.

Во-вторых, вы не определяете методы жизненного цикла как функции стрелок. Вы делаете это так:

UNSAFE_componentWillReceiveProps(nextProps) {
    console.log("firstName : " + this.props.user.firstName)
}

Лучшее решение? Это:

componentDidUpdate(prevProps) {
  if (prevProps.user !== this.props.user) {
    console.log(`firstName: ${this.props.user.firstName}`);
  }
}
...