Katakanlah saya memiliki 3 input: rate, sendAmount, dan acceptAmount. Saya menempatkan 3 masukan itu pada parameter diffing useEffect. Aturannya adalah:
- Jika sendAmount berubah, saya menghitung
receiveAmount = sendAmount * rate
- Jika acceptAmount berubah, saya menghitung
sendAmount = receiveAmount / rate
- Jika tarif berubah, saya menghitung
receiveAmount = sendAmount * rate
kapansendAmount > 0
atau saya menghitungsendAmount = receiveAmount / rate
kapanreceiveAmount > 0
Berikut adalah codesandbox https://codesandbox.io/s/pkl6vn7x6j untuk mendemonstrasikan masalahnya.
Adakah cara untuk membandingkan oldValues
dan newValues
suka componentDidUpdate
daripada membuat 3 penangan untuk kasus ini?
Terima kasih
Inilah solusi terakhir saya dengan usePrevious
https://codesandbox.io/s/30n01w2r06
Dalam kasus ini, saya tidak dapat menggunakan beberapa useEffect
karena setiap perubahan mengarah ke panggilan jaringan yang sama. Itu sebabnya saya juga biasa changeCount
melacak perubahannya. Ini changeCount
juga membantu untuk melacak perubahan dari hanya lokal, jadi saya dapat mencegah panggilan jaringan yang tidak perlu karena perubahan dari server.