React 19 wprowadza znaczące ulepszenia wspierania niestandardowych elementów w porównaniu z poprzednimi wersjami, koncentrując się przede wszystkim na sposobu zarządzania rekwizytami podczas renderowania. Oto kluczowe różnice:
Ulepszone obchodzenie się z rekwizytami
1. Rozdzielenie atrybutów i właściwości: W React 19 rekwizyty odpowiadające właściwościom w instancji elementu niestandardowego są przypisywane jako właściwości podczas renderowania po stronie klienta. Jeśli rekwizyt jest prymitywnym typem (jak `String`,` numer 'lub `true`), jest renderowany jako atrybut. Typy niepryminitywne (takie jak „obiekt”, „symbol” lub „funkcja”) są wykluczone z renderowania. Takie podejście pozwala na bardziej intuicyjną interakcję z niestandardowymi elementami, dostosowując się do tego, jak są one zwykle zaprojektowane do funkcjonowania [3] [4].
2. Ulepszenia renderowania po stronie serwera (SSR): Podczas SSR obowiązuje ta sama logika: Prymitywne rekwizyty są renderowane jako atrybuty, podczas gdy typy niepryminitywne są pominięte. Zapewnia to, że wyjście renderowane przez serwer jest zgodne z tym, czego oczekuje klient, zmniejszając potencjalne niedopasowania podczas nawodnienia [4] [5].
3. Zakopiowane rejestry elementów niestandardowych: React 19 obsługuje rejestry niestandardowych elementów niestandardowych, umożliwiając programistom skuteczniejsze zarządzanie niestandardowymi elementami w architekturach mikro-frontend. Ta funkcja pomaga zapobiegać konfliktom wersji, gdy wiele aplikacji zależy od różnych wersji tego samego niestandardowego elementu, zwiększając modułowość i kompatybilność [2].
4. Ulepszone wskaźniki wydajności: React 19 osiągnął 100% wynik w zakresie elementów niestandardowych wszędzie, co stanowi znaczną poprawę w stosunku do poprzednich wersji. Wskazuje to na lepszą wydajność i kompatybilność z komponentami internetowymi, zajmując się wcześniejszą krytyką dotyczącą obsługi niestandardowych elementów [5].
Te ulepszenia w React 19 nie tylko usprawniają integrację niestandardowych elementów do aplikacji React, ale także poprawiają ogólną wydajność i wrażenia programistów, co ułatwia pracę z komponentami internetowymi w kontekście React.
Cytaty:[1] https://github.com/facebook/react/issues/11347
[2] https://github.com/facebook/react/issues/28938
[3] https://www.angularmininds.com/blog/react-19-beta-features
[4] https://react.dev/blog/2024/04/25/react-19
[5] https://piccalil.li/blog/upcing-custom-element-support-in-react/
[6] https://www.bacancytechnology.com/blog/whats-new-in-react-19
[7] https://eluminoustechnologies.com/blog/react-19/
[8] https://www.geeksforgeeks.org/react-19-new-features-and-pdates/