Как обновить один элемент состояния на основе других изменений состояния?
Я использую реагирующий контекст для управления показом / скрытием некоторых элементов, поскольку эти элементы зависят от данных, возвращаемых несколькими вызовами сервера. Как правильно обновлять состояние контекста на основе других изменений состояния?
Это то, что я пытался, и это не сработало, поскольку это становится бесконечным циклом. Все prevState
элементы содержат либо null
или возврат данных с сервера.
componentDidUpdate(prevProps, prevState) {
this.setState({
showX: (
prevState.a &&
prevState.b &&
prevState.c
),
showY: (
prevState.d
)
})
}
1 ответ
Вам следует позвонить setState
в componentDidUpdate
только с условным оператором, который проверяет, действительно ли изменяется реквизит или состояние. Также получите логическое значение, используя !!
или же Boolean constructor
componentDidUpdate(prevProps, prevState) {
const { a, b, c, d } = this.props;
if (a !== prevState.a || b !== prevState.b || c !== prevState.c || d !== prevState.d) {
this.setState({
showX: !!(
prevState.a &&
prevState.b &&
prevState.c
),
showY: !!prevState.d
})
}
}