如何在jQuery上的现有jQuery应用程序中加载React组件

阿伦巴哈尔

我有一个使用jQuery / HTML构建的单页应用程序。我无法在React中重写现有应用程序,因为它很大。

我计划使用React在现有应用程序中构建新屏幕。但是我想知道,如何从现有导航中单击按钮/链接来渲染React屏幕?

就像单击处理程序函数是正常的JavaScript,它位于React组件之外,并且在处理函数中,我必须编写代码以加载由React组件制作的新屏幕。

我没有在index.html中直接包含react.js和react-dom.js,而是通过使用babel和webpack创建bundle.js。因此,在bundle.js之外访问ReactDOM.render会引发错误。

帕特里克狗

使用React,您可以使用ReactDOM.render将使用React组件创建的布局附加到DOM。

附加到哪个DOM节点或何时调用该函数并不重要。通常的方法是在页面加载时执行此操作,但是也可以在单击按钮时执行此操作。

它可能看起来像这样:

$('#my-button').click(() => ReactDOM.render(<MyApp />, $('#my-container')[0]);

在此示例中,<MyApp />将是React布局的根组件,并且my-container将是您要放置React布局的页面上的某个div。

如果我不使用模块捆绑器怎么办?

如果您的现有页面未使用任何类似webpack的模块捆绑程序,则无法轻松地导入ReactDOM或在纯jQuery代码中使用JSX表示法。

在这种情况下,设置一个webpack构建以创建React布局,并公开一个将React布局添加到DOM的全局函数。一个适合初学者的方法是使用create-react-app

CRA可以创建一个包含您的JSX代码和您需要的所有库的包。您将其包含在脚本标签中的页面中,就像包含jQuery库一样。

在您的React应用程序中,创建一个将React布局添加到DOM的全局函数,例如:

window.renderMyReactApp = element => ReactDOM.render(<MyApp />, element);

在HTML页面上的jQuery代码中,如下调用函数:

$('#my-button').click(function() {
  window.renderMyReactApp($('#my-container')[0]);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

角度应用程序如何加载/启动?如何在index.html中加载应用程序组件模板?

如何在Blazor Web应用程序内加载jQuery?

如何在 JavaFX 应用程序中加载的 FXML 文件上显示元素?

如何在Web应用程序中加载多个XSD?

如何在Django应用程序中加载更多内容?

如何在反应应用程序中加载外部脚本

如何在Blazor应用程序中加载.gltf

如何在React应用程序的运行时中加载JSON配置?

如何在React Web应用程序中加载tensorflow.js模型?

如何在Aurelia入门应用程序(导航应用程序)中使用JQuery UI组件

如何在角度应用程序中加载所有依赖项

如何在Angular + Webpack + Heroku应用程序中加载应用程序之前包括CSS

如何在React组件中加载脚本

加载网站时,如何在我的 React 应用程序上显示来自 Hacker News API 的所有故事?

React / Redux在组件构造器中加载应用程序状态

如何在使用Cordova构建的现有混合应用程序上实施拉动刷新

如何在现有的Tomcat Web应用程序上实施SSO

如何在Pythonanywhere上更改现有Django Web应用程序的URL配置?

如何使用SystemJS在Angular2应用程序中加载bootstrap.js,jQuery和其他模块

如何在现有应用程序中使用django-scheduler应用程序

如何在同一个应用程序中加载两个伪造查看器(Angular Forge Viewer 组件)

如何在jQuery中加载函数行为

在React Native应用程序中加载片段

在React应用程序中加载动态生成的图像

如何在dojo应用程序构建概要文件中加载json文件?

如何在URLClassLoader中加载存储在应用程序资源中的JAR

仅在需要时如何在我的应用程序中加载Google Maps api <script>?

如何在 dojo2 应用程序中加载 AMD 模块

如何在Web Java应用程序(jsp)中加载Bootstrap的CSS和JS?