我可以在一个使用有效的钩子内设置状态吗?
假设我有一些状态依赖于其他状态(例如,当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>
)
}