【发布时间】:2019-04-26 00:38:30
【问题描述】:
假设我有 3 个输入:rate、sendAmount 和 receiveAmount。我将这 3 个输入放在 useEffect 差异参数上。规则是:
- 如果 sendAmount 发生变化,我计算
receiveAmount = sendAmount * rate - 如果receiveAmount改变,我计算
sendAmount = receiveAmount / rate - 如果汇率发生变化,我在
sendAmount > 0时计算receiveAmount = sendAmount * rate,或者在receiveAmount > 0时计算sendAmount = receiveAmount / rate
这里是代码框https://codesandbox.io/s/pkl6vn7x6j 来演示问题。
有没有办法比较componentDidUpdate 上的oldValues 和newValues,而不是为这种情况制作3 个处理程序?
谢谢
这是我使用usePrevious 的最终解决方案
https://codesandbox.io/s/30n01w2r06
在这种情况下,我不能使用多个useEffect,因为每次更改都会导致相同的网络调用。这就是为什么我也使用changeCount 来跟踪更改。这个changeCount 也有助于仅从本地跟踪更改,因此我可以防止由于服务器更改而导致不必要的网络调用。
【问题讨论】:
-
componentDidUpdate 究竟应该如何提供帮助?您仍然需要编写这 3 个条件。
-
我添加了一个带有 2 个可选解决方案的答案。其中一个对你有用吗?
标签: reactjs react-hooks