Проблема с componentWillReceiveProps в React

#reactjs

#reactjs

Вопрос:

Я получаю сообщение об ошибке, если я использую приведенный ниже код.

 componentWillReceiveProps(nextProps) {
        if (nextProps.uploadImage.message === 'File uploaded') {
            this.setState({ photostatus: 'image' });
        }
        else {
            this.setState({ photostatus: 'input' });
        }
    }
  

Но я не получаю ошибку, если использую приведенный ниже код

 componentWillReceiveProps(nextProps) {
        if (nextProps.uploadImage) {
            this.setState({ photostatus: 'image' });
        }
        else {
            this.setState({ photostatus: 'input' });
        }
    }
  

Моя ошибка выглядит следующим образом

введите описание изображения здесь

Комментарии:

1. Разве 2-й фрагмент с проверкой в любом случае не лучше? Может быть обновление другого реквизита, которое не включает uploadImage свойство, следовательно, ошибка, которую вы получаете.

2. Второй фрагмент следует использовать, если вы не хотите проверять конкретное сообщение «Загруженный файл».

Ответ №1:

Вы получаете ошибку, потому что пытаетесь найти значение message свойства undefined .

Вы должны изменить свое условие if примерно так,

 componentWillReceiveProps(nextProps) {
    if (nextProps.uploadImage amp;amp; (nextProps.uploadImage.message === 'File uploaded')) {
        this.setState({ photostatus: 'image' });
    }
    else {
        this.setState({ photostatus: 'input' });
    }
}