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 * ratekapansendAmount > 0atau saya menghitungsendAmount = receiveAmount / ratekapanreceiveAmount > 0
Berikut adalah codesandbox https://codesandbox.io/s/pkl6vn7x6j untuk mendemonstrasikan masalahnya.
Adakah cara untuk membandingkan oldValuesdan newValuessuka componentDidUpdatedaripada 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 useEffectkarena setiap perubahan mengarah ke panggilan jaringan yang sama. Itu sebabnya saya juga biasa changeCountmelacak perubahannya. Ini changeCountjuga membantu untuk melacak perubahan dari hanya lokal, jadi saya dapat mencegah panggilan jaringan yang tidak perlu karena perubahan dari server.