Скажімо, у мене є 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також корисно відслідковувати зміни лише від локальних, тому я можу запобігти зайвим мережевим дзвінкам через зміни з боку сервера.