Powiedzmy, że mam 3 wejścia: rate, sendAmount i acceptAmount. Umieściłem te 3 wejścia na różnicowych parametrach useEffect. Zasady są następujące:
- Jeśli wartość sendAmount uległa zmianie, obliczam
receiveAmount = sendAmount * rate
- Jeśli wartość otrzymanej kwoty uległa zmianie, obliczam
sendAmount = receiveAmount / rate
- Jeśli kurs się zmienił, obliczam
receiveAmount = sendAmount * rate
kiedysendAmount > 0
lub obliczamsendAmount = receiveAmount / rate
kiedyreceiveAmount > 0
Oto kodyandbox https://codesandbox.io/s/pkl6vn7x6j, aby zademonstrować problem.
Czy istnieje sposób na porównanie oldValues
i newValues
polubienie componentDidUpdate
zamiast tworzenia 3 programów obsługi dla tego przypadku?
Dzięki
Oto moje ostateczne rozwiązanie z usePrevious
https://codesandbox.io/s/30n01w2r06
W tym przypadku nie mogę użyć wielu, useEffect
ponieważ każda zmiana prowadzi do tego samego połączenia sieciowego. Dlatego też używam changeCount
do śledzenia zmian. Jest to changeCount
również pomocne w śledzeniu zmian tylko z lokalnego, więc mogę zapobiec niepotrzebnym połączeniom sieciowym z powodu zmian z serwera.