สมมติว่าฉันมี 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
นอกจากนี้ยังมีประโยชน์ในการติดตามการเปลี่ยนแปลงจากภายในเครื่องเท่านั้นดังนั้นฉันจึงสามารถป้องกันการโทรเครือข่ายที่ไม่จำเป็นเนื่องจากการเปลี่ยนแปลงจากเซิร์ฟเวอร์