Я не могу понять, как сделать мой компонентный повторный рендер при изменении значения this.props.user
. Первоначально значение this.props.user
имеет значение null, но оно изменяется на фактическое значение через секунду после. Ниже я показываю дочерний компонент. Родительский компонент отображает состояние хранилища на его реквизит, и я передаю его классу дочерних компонентов ниже.React use componentWillReceiveProps для повторной обработки компонента
export class UserInfoComponent extends Component {
constructor(props){
super(props);
this.state = {user: this.props.user}
}
componentWillReceiveProps(){
this.setState({user: this.props.user})
}
render() {
if(this.state.user)
return (
<h1>{this.state.user.firstName}</h1>
);
return (
<h1>loading</h1>
)
}
}
Зачем пользоваться государством? Изменение реквизита уже приведет к повторной обработке компонента. – FurkanO
Основное отличие здесь состоит в том, что в примере опроса они преобразуют переданные в реквизиты свои собственные внутренние состояния. Это происходит только один раз, когда компонент визуализируется так, что ссылка «this.state.user», на которую ссылается, всегда ссылается на первое значение, которое когда-либо передавалось, поскольку оно происходит во время построения компонента. 'componentWillReceiveProps' обновляет состояние, когда родительский компонент прошел в новых реквизитах, но это не происходит естественно и почему преобразование реквизита в состояние обычно является анти-шаблоном – finalfreq
. Могу сказать, что вам не нужно слушать изменения реквизита для перекомпоновки компонента. Вопрос может и не знать этого. Я не спрашивал об этой разнице. – FurkanO