假设我有3个输入:汇率、发送金额和接收金额。我将这3个输入放在useEffect差分参数上。规则如下:
- 如果发送金额发生变化,则计算 `receiveAmount = sendAmount * rate` - 如果接收金额发生变化,则计算 `sendAmount = receiveAmount / rate` - 如果汇率发生变化,则当 `sendAmount > 0` 时计算 `receiveAmount = sendAmount * rate` 或者当 `receiveAmount > 0` 时计算 `sendAmount = receiveAmount / rate`
这是codesandbox https://codesandbox.io/s/pkl6vn7x6j 来演示问题。
是否有一种方法可以像在componentDidUpdate中一样比较oldValues和newValues,而不是为此情况制作3个处理程序?
谢谢
- 如果发送金额发生变化,则计算 `receiveAmount = sendAmount * rate` - 如果接收金额发生变化,则计算 `sendAmount = receiveAmount / rate` - 如果汇率发生变化,则当 `sendAmount > 0` 时计算 `receiveAmount = sendAmount * rate` 或者当 `receiveAmount > 0` 时计算 `sendAmount = receiveAmount / rate`
这是codesandbox https://codesandbox.io/s/pkl6vn7x6j 来演示问题。
是否有一种方法可以像在componentDidUpdate中一样比较oldValues和newValues,而不是为此情况制作3个处理程序?
谢谢
这是我的最终解决方案,使用了usePrevious
https://codesandbox.io/s/30n01w2r06
在这种情况下,我不能使用多个useEffect
,因为每次更改都会导致相同的网络调用。这就是为什么我还使用changeCount
来跟踪更改。这个changeCount
也有助于跟踪仅来自本地的更改,因此我可以防止由于服务器端的更改而进行不必要的网络调用。