rate, sendAmount 및 receiveAmount의 세 가지 입력이 있다고 가정합니다. 3 개의 입력을 useEffect diffing params에 넣었습니다. 규칙은 다음과 같습니다.
- 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 처리기를 만드는가?
감사
https://codesandbox.io/s/30n01w2r06의 최종 솔루션은 다음과 같습니다.usePrevious
이 경우 useEffect
각 변경으로 인해 동일한 네트워크 호출이 발생하므로 여러 개를 사용할 수 없습니다 . 그렇기 때문에 changeCount
변경 사항도 추적하는 데 사용 합니다. changeCount
또한 로컬의 변경 사항 만 추적하는 데 도움 이 되므로 서버의 변경으로 인한 불필요한 네트워크 호출을 방지 할 수 있습니다.