たとえば、rate、sendAmount、およびreceiveAmountの3つの入力があるとします。その3つの入力をuseEffect diffing paramsに配置しました。ルールは次のとおりです。
- sendAmountが変更された場合、計算します
receiveAmount = sendAmount * rate
- receiveAmountが変更された場合、計算します
sendAmount = receiveAmount / rate
- レートを変更した場合、私は計算し
receiveAmount = sendAmount * rate
たときsendAmount > 0
または私が計算しsendAmount = receiveAmount / rate
たときにreceiveAmount > 0
これがcodesandbox https://codesandbox.io/s/pkl6vn7x6jです問題を実証するです。
比較する方法があるoldValues
とnewValues
上の好きは、componentDidUpdate
代わりに、このような場合のために3つのハンドラを作るのは?
ありがとう
これがhttps://codesandbox.io/s/30n01w2r06の私の最終的な解決策ですusePrevious
この場合、useEffect
変更ごとに同じネットワーク呼び出しが発生するため、複数を使用することはできません。そのため、私もchangeCount
変更の追跡に使用しています。これchangeCount
はローカルからの変更のみを追跡するのにも役立ちます。サーバーからの変更による不要なネットワーク呼び出しを防ぐことができます。