สมมติว่าฉันมี 3 อินพุต: rate, sendAmount และ earnAmount ฉันใส่ 3 อินพุตนั้นไว้ใช้ กฎคือ:
- ถ้า sendAmount เปลี่ยนแปลงฉันจะคำนวณ
receiveAmount = sendAmount * rate - หากได้รับการเปลี่ยนแปลงฉันคำนวณ
sendAmount = receiveAmount / rate - หากอัตราเปลี่ยนแปลงฉันคำนวณว่า
receiveAmount = sendAmount * rateเมื่อใดsendAmount > 0หรือคำนวณsendAmount = receiveAmount / rateเมื่อใดreceiveAmount > 0
นี่คือรหัสแซนด์บ็อกซ์https://codesandbox.io/s/pkl6vn7x6jเพื่อสาธิตปัญหา
มีวิธีที่จะเปรียบเทียบได้oldValuesและnewValuesต้องการบนcomponentDidUpdateแทนการขนย้ายวัสดุ 3 สำหรับกรณีนี้หรือไม่?
ขอบคุณ
นี่คือทางออกสุดท้ายของฉันกับusePrevious
https://codesandbox.io/s/30n01w2r06
ในกรณีนี้ฉันไม่สามารถใช้หลายรายการได้useEffectเนื่องจากการเปลี่ยนแปลงแต่ละครั้งนำไปสู่การโทรในเครือข่ายเดียวกัน นั่นเป็นเหตุผลที่ฉันใช้changeCountเพื่อติดตามการเปลี่ยนแปลงด้วย changeCountนอกจากนี้ยังมีประโยชน์ในการติดตามการเปลี่ยนแปลงจากภายในเครื่องเท่านั้นดังนั้นฉันจึงสามารถป้องกันการโทรเครือข่ายที่ไม่จำเป็นเนื่องจากการเปลี่ยนแปลงจากเซิร์ฟเวอร์