Прежде всего, ваш желаемый встроенный / инициализационный формат (который, конечно, типичен для встраиваемых виджетов) требует, чтобы загруженный скрипт создал глобальный объект Example
, для которого вы затем можете вызвать .init()
, который затем отобразит ваш widget html в тег, указанный в селекторе.
Next создает полную страницу, а не объект, который можно вызвать, как описано выше.
Чтобы изменить это, вам нужно переопределить следующий сервер , чтобы обойти весь процесс app.render()
для определенных c URL-адресов и вместо этого создать объект Example
, который выполняет свой собственный вызов ReactDOM.render()
на .init()
.
Вам также необходимо рассмотреть два возможных сценария ios, когда веб-страница, в которую встроен ваш виджет, может быть страницей на основе React или нет. Таким образом, вам нужно либо использовать уже загруженный ReactDOM, либо заставить браузер загружать React, прежде чем вы сможете отобразить свой виджет.
Хотя все это выполнимо, нелегко сделать надежным и сделать это внутри Next JS делает его более громоздким. Я бы посоветовал структурировать код вашего приложения Next JS таким образом, чтобы части, которые вам нужны в виджете, были компонентами, которые вы могли использовать как в основном приложении Next JS, так и в отдельном встраиваемом виджете, используя простой CRA.
Дополнительная информация:
https://selleo.com/blog/how-to-create-embedded-react-widget (но не части iFrame)
https://meda.io/embed-react-into-an-html-web-page/