Trong React 19, việc xử lý các thẻ bất ngờ trong quá trình hydrat hóa đã được cải thiện đáng kể, đặc biệt là cách nó tương tác với các tập lệnh của bên thứ ba và phần mở rộng trình duyệt. Dưới đây là các ví dụ cụ thể về cách React 19 bỏ qua các thẻ bất ngờ:
Bỏ qua thẻ không mong muốn
1. Các yếu tố đầu và cơ thể: Khi React gặp các thẻ bất ngờ trong các phần `
` và `` của tài liệu trong quá trình hydrat hóa, nó bỏ qua các thẻ này một cách thông minh thay vì kích hoạt lỗi không khớp hydrat hóa. Điều này có nghĩa là nếu tập lệnh của bên thứ ba đã chèn các phần tử không khớp với HTML do máy chủ tạo, React sẽ không cố gắng điều chỉnh những khác biệt này, do đó tránh các lỗi và gián đoạn tiềm năng trong quá trình kết xuất ứng dụng [1] [2] [4].2. Bảo quản các bảng kiểu: Nếu React cần hiển thị lại toàn bộ tài liệu do sự không phù hợp hydrat hóa không liên quan đến sửa đổi của bên thứ ba, nó sẽ để lại bất kỳ bảng kiểu nào được đưa vào bởi các tập lệnh đó. Điều này đảm bảo rằng tính toàn vẹn trực quan của ứng dụng vẫn còn nguyên ngay cả khi phát hiện sự khác biệt [2] [4].
3. Xử lý các sửa đổi của bên thứ ba: Trước đây, mọi sửa đổi được thực hiện bởi các tập lệnh của bên thứ ba đều có thể dẫn đến các lỗi hydrat hóa, vì React sẽ cố gắng điều hòa HTML do máy chủ chuyển đổi với HTML phía máy khách đã sửa đổi. Trong React 19, những sửa đổi này bị bỏ qua trong quá trình hydrat hóa, cho phép ứng dụng tiếp tục hoạt động trơn tru mà không bị ảnh hưởng bởi những thay đổi bên ngoài [1] [4].
Kịch bản ví dụ
Hãy xem xét một kịch bản trong đó tập lệnh của bên thứ ba thêm một thẻ `
Những cải tiến trong React 19 không chỉ tăng cường độ mạnh của hydrat hóa mà còn cung cấp trải nghiệm phát triển mượt mà hơn bằng cách giảm tần suất và tác động của các lỗi hydrat hóa liên quan đến tương tác của bên thứ ba.
Trích dẫn:[1] https://webdeveloper.beehiiv.com/p/react-19-beta-release-quick-guide
[2] https://www.epicweb.dev/tips/whats-coming-in-react-19-beta
[3] https://sentry.io/answers/hydration-error-nextjs/
[4] https://react.dev/blog/2024/04/25/react-19
[5] https://github.com/facebook/react/issues/26224
[6] https://github.com/cypress-io/cypress/issues/27204
[7] https://legacy.reactjs.org/docs/hooks-reference.html
[8] https://www.kellton.com/kellton-tech-blog/react-19-latest-features-and-updates