Diciamo che ho 3 input: rate, sendAmount e receiveAmount. Ho messo 3 input su parametri differenti di EffectEffect. Le regole sono:
- Se sendAmount è cambiato, calcolo
receiveAmount = sendAmount * rate - Se changeAmount è cambiato, calcolo
sendAmount = receiveAmount / rate - Se la tariffa è cambiata, calcolo
receiveAmount = sendAmount * ratequandosendAmount > 0o calcolosendAmount = receiveAmount / ratequandoreceiveAmount > 0
Ecco la codesandbox https://codesandbox.io/s/pkl6vn7x6j per dimostrare il problema.
C'è un modo per confrontare il oldValuese newValuessimili su componentDidUpdateinvece di creare 3 gestori per questo caso?
Grazie
Ecco la mia soluzione finale con usePrevious
https://codesandbox.io/s/30n01w2r06
In questo caso, non posso usare più useEffectperché ogni modifica porta alla stessa chiamata di rete. Ecco perché uso anche changeCountper tenere traccia delle modifiche. Questo changeCountè utile anche per tenere traccia delle modifiche solo dal locale, quindi posso impedire chiamate di rete non necessarie a causa delle modifiche dal server.