Có vẻ như không có sự khác biệt thực sự
React, vì một số lý do, gắn người nghe Component.onChange
vào element.oninput
sự kiện DOM . Xem ghi chú trong tài liệu về các biểu mẫu:
Tài liệu phản ứng - Biểu mẫu
Có nhiều người ngạc nhiên bởi hành vi này. Để biết thêm chi tiết, hãy tham khảo vấn đề này trên trình theo dõi vấn đề React:
Ghi lại cách onChange của React liên quan đến onInput # 3964
Trích dẫn các ý kiến về vấn đề đó:
Tôi không hiểu tại sao React lại chọn làm cho onChange hoạt động giống như onInput. Như tôi có thể nói, chúng tôi không có cách nào để khôi phục lại hành vi onChange cũ. Các tài liệu cho rằng đó là một "nhầm lẫn" nhưng không phải vậy, nó hoạt động khi có thay đổi, chỉ là không cho đến khi đầu vào mất tiêu điểm.
Để xác thực, đôi khi chúng tôi không muốn hiển thị lỗi xác thực cho đến khi chúng nhập xong. Hoặc có thể chúng tôi không muốn hiển thị lại mỗi lần nhấn phím. Bây giờ cách duy nhất để làm điều đó là với onBlur nhưng bây giờ chúng ta cũng cần kiểm tra xem giá trị đã thay đổi theo cách thủ công chưa.
Nó không phải là vấn đề lớn, nhưng với tôi thì có vẻ như React đã vứt bỏ một sự kiện hữu ích và đi chệch khỏi hành vi tiêu chuẩn khi đã có một sự kiện thực hiện điều này.
Tôi đồng ý 100% với nhận xét ... Nhưng tôi đoán việc thay đổi nó ngay bây giờ sẽ mang lại nhiều vấn đề hơn là nó giải quyết vì rất nhiều mã đã được viết dựa trên hành vi này.
React không phải là một phần của bộ sưu tập API Web chính thức
Mặc dù React được xây dựng trên nền tảng JS và đã chứng kiến tỷ lệ chấp nhận rất lớn, vì React tồn tại một công nghệ để ẩn rất nhiều chức năng trong API (khá nhỏ) của riêng nó. Một khi khu vực mà điều này hiển nhiên là trong hệ thống sự kiện, nơi có rất nhiều thứ đang diễn ra dưới bề mặt thực sự khác hoàn toàn với hệ thống sự kiện DOM tiêu chuẩn. Không chỉ về mặt sự kiện nào thực hiện những gì, mà còn về thời điểm dữ liệu được phép tồn tại ở giai đoạn xử lý sự kiện nào. Bạn có thể đọc về điều ấy nhiều hơn tại đây:
Hệ thống sự kiện React