使 React 组件可用作小部件

IT技术 reactjs
2021-05-04 18:43:36

我有一个复杂的 React 应用程序(包括呈现某些组件的身份验证等),并且有一个特定的组件,一个日期选择器,我希望其他用户将它作为一个小部件嵌入到他们的网站上,例如谷歌地图 ( <script src="my_widget"></script>)。

我已经成功地将它作为 iFrame 共享,但我想学习如何将它作为“适当的”小部件来实现。我在 SO 上找到的大多数解决方案都不符合我的理解能力,也许我指向了一个更菜鸟的解决方案。

仅供参考,我正在使用create-react-app样板代码加载 React 应用程序:

ReactDOM.render(
  <App />,
  document.querySelector("#root")
);
1个回答

您可以按原样创建您的 react-app。您还需要做两件事才能使其工作。

  1. 提供一种通过主机页面按需加载或呈现您的应用程序的方法。例如ReactDOM.render(<App />, document.querySelector("#root"));,您可以添加这样的方法,而不是直接在主应用程序中调用
const loadApp = (targetElement) => {
   ReactDOM.render(<App />, targetElement);
};

您可以使用这样的全局变量公开此方法。

window.reactWidget.load = loadApp;
  1. 之后,您需要创建一个 JS 代码段,它可以加载您捆绑的 javascript 文件,并在从网络加载文件后调用此函数。
 window.reactWidget.load(document.querySelector(#whatever'));