У меня есть приложение React, которое инициализируется так же просто, как:
let globalTodos = some_fetch_from_localstorage();
...
function changeGlobalTodos() {
globalTodos = another_fetch_from_localstorage();
}
...
ReactDOM.render(<ReactApp todos={globalTodos} />, document.getElementById('app'));
Внутри приложения я делаю следующее:
constructor(props) {
super(props);
this.state = {
todos: []
};
}
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.todos !== prevState.todos) {
return { todos: nextProps.todos };
} else return null;
}
componentDidUpdate(prevProps, prevState) {
if (prevProps.todos !== this.props.todos) {
this.setState({ todos: this.props.todos });
}
}
Проблема в том, что всякий раз, когда я обновляю globalTodos
, реквизиты в приложении React не обновляются: оно остается на начальном значении globalTodos
.
Я пытался играть с getDerivedStateFromProps
, вызывается только при первой установке реквизита, в то время как componentDidUpdate
никогда не вызывается: - /
Что мне здесь не хватает?