Я пытаюсь обновить один из моих компонентов, если длина массива в props не совпадает с предыдущим. Проблема в том, что я запускаю действие redux на componentWillMount. Поэтому, когда я передаю this.props.array функции в shouldComponentUpdate, он изначально пуст, поэтому он не работает так, как я хочу.
Мне интересно, есть ли у кого-нибудь совет или знает лучший способ / исправить это? Заранее спасибо.
componentDidMount() {
this.props.getAllCourses(this.props.user.id);
}
shouldComponentUpdate(nextProps) {
return compareCoursesProps(nextProps, this.props.courses);
}
render() {
Компонент, который получает разные реквизиты, должен обновляться автоматически, также componentWillMount
считается небезопасно, и его следует избегать в новом коде. Если вы хотите отправить действие, сделайте это в componentDidMount.
@MarkoSavic Добавил код выше. Спасибо
Для этого вы можете использовать жизненный цикл getDerivedStateFromProps. Это может дать вам идею
state = { yourArray:[] }
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.yourArray !== prevState.yourArray) {
return { yourArray: nextProps.yourArray};
}
return null;
}
Пожалуйста, предоставьте код. Спасибо.