Допустим, у меня есть какое-то состояние, которое зависит от какого-то другого состояния (например, когда A меняется, я хочу, чтобы B изменился).
Уместно ли создавать ловушку, которая наблюдает за A и устанавливает B внутри ловушки useEffect?
Будут ли эффекты каскадироваться так, что, когда я нажму кнопку, первый эффект сработает, что приведет к изменению b, в результате чего сработает второй эффект перед следующим рендером? Есть ли какие-либо недостатки в производительности для структурирования кода, подобного этому?
let MyComponent = props => {
let [a, setA] = useState(1)
let [b, setB] = useState(2)
useEffect(
() => {
if (/*some stuff is true*/) {
setB(3)
}
},
[a],
)
useEffect(
() => {
// do some stuff
},
[b],
)
return (
<button
onClick={() => {
setA(5)
}}
>
click me
</button>
)
}