У меня есть приложение React версии 16. Изменения состояния обрабатываются с использованием React Context, концепции редуктора.
Чтобы изменить состояние и сделать что-то, можно обработать это изменение, как указано ниже. Например - я нахожусь в компоненте «Контакт». Внутри этого я отправляю изменение состояния на переменный возраст, который представляет собой число, указанное ниже -
dispatch({
type: "CHANGE_AGE",
payload: age
})
и поймать отправку в редукторе, как указано ниже
case "CHANGE_AGE":
return {
...state,
age: action.payload
}
Чтобы сделать что-то в компоненте «Контакт» после изменения возраста, мы можем использовать useEffect, чтобы отслеживать изменение «возраста».
useEffect({
//doSomething()
},[state.age])
Проблема в следующем: что, если бы нам пришлось изменить объект в состоянии, т.е. вместо изменения возраста нам пришлось бы изменить адрес, как указано ниже, и мы должны были бы что-то сделать после изменения адреса.
Как мы следим за сменой адреса?
dispatch({
type: "CHANGE_ADDRESS",
payload: {
city: "Delhi",
country: "India",
zip: '22233'
}
})
Одно из возможных решений - наряду с рассылкой адресов, мы можем отправить переменную, при изменении которой мы можем что-то сделать. Но это не идеальное решение.