Мне нужно вносить изменения в свойство состояния каждый раз, когда изменяется другое свойство.
Например:
- , когда меняется
counter
, мне нужно обновить peopleArray
- изменение нескольких действий
counter
(см. Блок Диспетчер)
Состояние:
{
peopleArray: ['Shawn', 'Amanda', 'Jermaine']
foodArray: []
counter: 0
}
Диспетчер:
onAddPeople: (name) => ({ type: 'ADD_PEOPLE', payload: name }) // increments counter
onAddFood: (type) => ({ type: 'ADD_FOOD', payload: type }) // increments counter
(Часть) Редуктора: счетчик приращений каждый раз, когда добавляется новый человек
if (action.type === 'ADD_PEOPLE') {
let updatePeople = [...state.peopleArray]
updatedPeople.push(action.payload.name)
return {
...state,
peopleArray: updatedPeople,
counter: counter + 1
}
}
В основном мне нужен какой-то подписчик, который позволит чтобы я мог обновить peopleArray
, но я не хочу заканчиваться бесконечным l oop.
Я попробовал следующее в файле PeopleComponent. js:
componentWillUpdate(nextProps: any) {
if (this.props.counter !== nextProps.counter) {
// Trigger update to peopleArray
}
}
Проблема в том, что, как только я запускаю обновление в componentWillUpdate
, меняется peopleArray
, что приводит к изменению состояния ..., которое повторно отображает приложение и снова вызывает componentWillUpdate
... . введите бесконечно l oop: (
Как мне сделать это "правильно"?