Допустим, у меня есть 3 входа: скорость, sendAmount и receiveAmount. Я поставил эти 3 входа на использование различных параметров. Правила таковы:
- Если sendAmount изменился, я рассчитываю
receiveAmount = sendAmount * rate
- Если полученная сумма изменилась, я рассчитываю
sendAmount = receiveAmount / rate
- Если ставка изменилась, я рассчитываю
receiveAmount = sendAmount * rate
когдаsendAmount > 0
или я вычисляюsendAmount = receiveAmount / rate
когдаreceiveAmount > 0
Вот коды и окно https://codesandbox.io/s/pkl6vn7x6j, чтобы продемонстрировать проблему.
Есть ли способ сравнить oldValues
и newValues
нравится componentDidUpdate
вместо 3 обработчиков для этого случая?
Спасибо
Вот мое окончательное решение с usePrevious
https://codesandbox.io/s/30n01w2r06
В этом случае я не могу использовать несколько, useEffect
потому что каждое изменение приводит к одному и тому же сетевому вызову. Вот почему я также использую, changeCount
чтобы отслеживать изменения тоже. Это changeCount
также полезно для отслеживания изменений только локально, поэтому я могу предотвратить ненужный сетевой вызов из-за изменений с сервера.