Веб-компоненты¶
React и веб-компоненты созданы для решения самых разных задач. Веб-компоненты обеспечивают надёжную инкапсуляцию для повторно используемых компонентов, в то время как React предоставляет декларативную библиотеку для синхронизации данных c DOM. Две цели дополняют друг друга. Как разработчик, вы можете использовать React в своих веб-компонентах, или использовать веб-компоненты в React, или и то, и другое.
Большинство разработчиков React обходятся без веб-компонентов, но у вас может появиться желание попробовать их. Например, если ваш проект использует сторонние компоненты пользовательского интерфейса, написанные с помощью веб-компонентов.
Использование веб-компонентов в React¶
1 2 3 4 5 6 7 8 9 |
|
Примечание:
Веб-компоненты часто предоставляют императивный API. Например, веб-компонент
video
может предоставлять функцииplay()
иpause()
. Чтобы получить доступ к необходимому API веб-компонентов, необходимо использовать реф для взаимодействия с DOM-узлом напрямую. Если вы используете сторонние веб-компоненты, лучшим решением будет создать React-компонент и использовать его как обёртку для веб-компонента.События, созданные веб-компонентами, могут неправильно распространяться через дерево React-компонентов. Вам нужно вручную добавить обработчики для таких событий в собственные React-компоненты.
Веб-компоненты используют «class» вместо «className», что часто вводит людей в замешательство.
1 2 3 4 5 6 7 8 |
|
Использование React в веб-компонентах¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Примечание:
Данный код не будет работать, если вы преобразуете классы с помощью Babel. Взгляните на ишью с обсуждением. Добавьте шим custom-elements-es5-adapter перед загрузкой веб-компонентов, чтобы решить эту проблему.