Скажімо, у мене є 3 входи: rate, sendAmount і acceptAmount. Я поставив, що 3 входи на useEffect відрізняються парами. Правила такі:
- Якщо sendAmount змінився, я обчислюю
receiveAmount = sendAmount * rate
- Якщо прийом змінено, я підрахував
sendAmount = receiveAmount / rate
- Якщо показник змінився, я обчислюю,
receiveAmount = sendAmount * rate
колиsendAmount > 0
я обчислю,sendAmount = receiveAmount / rate
колиreceiveAmount > 0
Ось codeandbox https://codesandbox.io/s/pkl6vn7x6j, щоб продемонструвати проблему.
Чи є спосіб порівняти oldValues
і newValues
подібне, componentDidUpdate
а не зробити 3 обробники для цього випадку?
Дякую
Ось моє остаточне рішення з usePrevious
https://codesandbox.io/s/30n01w2r06
У цьому випадку я не можу використовувати декілька, useEffect
оскільки кожна зміна веде до одного і того ж мережевого дзвінка. Тому я також використовую changeCount
для відстеження змін. Це changeCount
також корисно відслідковувати зміни лише від локальних, тому я можу запобігти зайвим мережевим дзвінкам через зміни з боку сервера.