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 * ratekiedysendAmount > 0lub obliczamsendAmount = receiveAmount / ratekiedyreceiveAmount > 0
Oto kodyandbox https://codesandbox.io/s/pkl6vn7x6j, aby zademonstrować problem.
Czy istnieje sposób na porównanie oldValuesi newValuespolubienie componentDidUpdatezamiast 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, useEffectponieważ każda zmiana prowadzi do tego samego połączenia sieciowego. Dlatego też używam changeCountdo śledzenia zmian. Jest to changeCountrównież pomocne w śledzeniu zmian tylko z lokalnego, więc mogę zapobiec niepotrzebnym połączeniom sieciowym z powodu zmian z serwera.