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