สมมติว่าฉันมีสถานะบางอย่างที่ขึ้นอยู่กับสถานะอื่น (เช่นเมื่อ 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>
)
}