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 * rate
quandosendAmount > 0
o calcolosendAmount = receiveAmount / rate
quandoreceiveAmount > 0
Ecco la codesandbox https://codesandbox.io/s/pkl6vn7x6j per dimostrare il problema.
C'è un modo per confrontare il oldValues
e newValues
simili su componentDidUpdate
invece 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ù useEffect
perché ogni modifica porta alla stessa chiamata di rete. Ecco perché uso anche changeCount
per 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.