Допустим, у меня есть 3 входа: скорость, sendAmount и receiveAmount. Я поставил эти 3 входа на использование различных параметров. Правила таковы:
- Если sendAmount изменился, я вычисляю
receiveAmount = sendAmount * rate
- Если receiveAmount изменился, я рассчитываю
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
также полезен для отслеживания изменений только локально, поэтому я могу предотвратить ненужный сетевой вызов из-за изменений с сервера.