Допустим, у меня есть 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также полезно для отслеживания изменений только локально, поэтому я могу предотвратить ненужный сетевой вызов из-за изменений с сервера.