Проблема с вопросом заключается в том, что вы спрашивали о другой вещи, которая не была вашей реальной ситуацией, а затем изменили ее, так что теперь это совсем другой вопрос, в то время как существующие ответы выглядят так, как будто они просто проигнорировали вопрос. Это не рекомендуемая практика для SO, потому что она не поможет вам получить желаемый ответ. Пожалуйста, не удаляйте важные части из вопроса, на который уже есть ответы (формулы расчета). Если у вас все еще есть проблемы (после моего предыдущего комментария (скорее всего, есть)), подумайте над тем, чтобы задать новый вопрос, который отражает ваш случай, и ссылку на этот вопрос как на предыдущую.

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

Ответы на вопрос(2)

Ваш ответ на вопрос