Angenommen, ich habe drei Eingaben: rate, sendAmount und receiveAmount. Ich habe diese 3 Eingänge auf useEffect diffing params gesetzt. Die Regeln sind:
- Wenn sendAmount geändert wurde, berechne ich
receiveAmount = sendAmount * rate - Wenn receiveAmount geändert wurde, berechne ich
sendAmount = receiveAmount / rate - Wenn sich die Rate ändert, berechne ich
receiveAmount = sendAmount * ratewannsendAmount > 0odersendAmount = receiveAmount / ratewannreceiveAmount > 0
Hier ist die Codesandbox https://codesandbox.io/s/pkl6vn7x6j , um das Problem zu demonstrieren.
Gibt es eine Möglichkeit, das oldValuesund newValuesdergleichen zu vergleichen, componentDidUpdateanstatt 3 Handler für diesen Fall zu erstellen?
Vielen Dank
Hier ist meine endgültige Lösung mit usePrevious
https://codesandbox.io/s/30n01w2r06
In diesem Fall kann ich nicht mehrere verwenden, useEffectda jede Änderung zu demselben Netzwerkanruf führt. Deshalb changeCountverfolge ich die Änderung auch. Dies ist changeCountauch hilfreich, um Änderungen nur von lokal zu verfolgen, damit ich unnötige Netzwerkanrufe aufgrund von Änderungen vom Server verhindern kann.