ดูเหมือนไม่มีความแตกต่างอย่างแท้จริง
ด้วยเหตุผลบางประการจะแนบผู้ฟังComponent.onChange
เข้ากับelement.oninput
เหตุการณ์DOM ดูหมายเหตุในเอกสารในแบบฟอร์ม:
ตอบสนองเอกสาร - แบบฟอร์ม
มีคนจำนวนมากขึ้นที่แปลกใจกับพฤติกรรมนี้ สำหรับรายละเอียดเพิ่มเติมโปรดดูปัญหานี้ในตัวติดตามปัญหาการตอบสนอง:
บันทึกว่า onChange ของ React เกี่ยวข้องกับ onInput # 3964 อย่างไร
อ้างจากความคิดเห็นเกี่ยวกับปัญหานั้น:
ฉันไม่เข้าใจว่าทำไม React ถึงเลือกที่จะทำให้ onChange ทำงานเหมือน onInput อย่างที่ฉันบอกเราไม่มีทางที่จะเอาพฤติกรรม onChange แบบเก่ากลับมาได้ เอกสารอ้างว่าเป็น "การเรียกชื่อผิด" แต่ไม่ใช่จริงๆโดยจะเริ่มทำงานเมื่อมีการเปลี่ยนแปลงไม่จนกว่าอินพุตจะสูญเสียโฟกัส
สำหรับการตรวจสอบความถูกต้องบางครั้งเราไม่ต้องการแสดงข้อผิดพลาดในการตรวจสอบความถูกต้องจนกว่าจะพิมพ์เสร็จ หรือบางทีเราไม่ต้องการให้ re-render ทุกครั้งที่กดแป้นพิมพ์ ตอนนี้วิธีเดียวที่จะทำได้คือ onBlur แต่ตอนนี้เราต้องตรวจสอบด้วยว่าค่านั้นเปลี่ยนแปลงด้วยตนเองหรือไม่
ไม่ใช่เรื่องใหญ่ แต่สำหรับฉันแล้วดูเหมือนว่า React โยนเหตุการณ์ที่เป็นประโยชน์ออกไปและเบี่ยงเบนไปจากพฤติกรรมมาตรฐานเมื่อมีเหตุการณ์ที่ทำเช่นนี้อยู่แล้ว
ฉันเห็นด้วย 100% กับความคิดเห็น ... แต่ฉันเดาว่าการเปลี่ยนตอนนี้จะทำให้เกิดปัญหามากกว่าที่จะแก้ได้เนื่องจากมีการเขียนโค้ดจำนวนมากที่อาศัยพฤติกรรมนี้แล้ว
React ไม่ได้เป็นส่วนหนึ่งของคอลเล็กชัน Web API อย่างเป็นทางการ
แม้ว่า React จะสร้างขึ้นบน JS และได้เห็นอัตราการนำไปใช้อย่างมากเนื่องจาก React เทคโนโลยีมีอยู่เพื่อซ่อนฟังก์ชันการทำงานจำนวนมากภายใต้ API ของตัวเอง (ค่อนข้างเล็ก) เมื่อพื้นที่ที่เห็นได้ชัดคือในระบบเหตุการณ์ซึ่งมีหลายสิ่งเกิดขึ้นใต้พื้นผิวซึ่งแตกต่างจากระบบเหตุการณ์ DOM มาตรฐานอย่างสิ้นเชิง ไม่เพียงแค่ในแง่ของเหตุการณ์ที่ทำสิ่งใด แต่ยังรวมถึงเมื่อข้อมูลได้รับอนุญาตให้คงอยู่ในขั้นตอนของการจัดการเหตุการณ์ คุณสามารถอ่านเพิ่มเติมได้ที่นี่:
ตอบสนองระบบเหตุการณ์