Javascript 如何在另一个React/Redux应用程序中嵌入React/Redux应用程序而不出现生命周期问题?
App A是一个独立的单页React/Redux应用程序,可插入其他应用程序(不一定是用React/Redux编写的)。我正在尝试将应用程序A嵌入到另一个单页React/Redux应用程序B中,如下所示:Javascript 如何在另一个React/Redux应用程序中嵌入React/Redux应用程序而不出现生命周期问题?,javascript,reactjs,redux,Javascript,Reactjs,Redux,App A是一个独立的单页React/Redux应用程序,可插入其他应用程序(不一定是用React/Redux编写的)。我正在尝试将应用程序A嵌入到另一个单页React/Redux应用程序B中,如下所示: 在应用程序B中,创建一个组件ComponentA,其路径与应用程序a使用的路径相同,并且其render()方法生成一个DIV标记以承载应用程序a 在ComponentA的componentWillMount()方法中,通过在文档体的末尾附加相应的标记,加载先前为app A构建的js捆绑包,从
- 在应用程序B中,创建一个组件ComponentA,其路径与应用程序a使用的路径相同,并且其
方法生成一个render()
标记以承载应用程序aDIV
- 在ComponentA的
方法中,通过在文档体的末尾附加相应的componentWillMount()
标记,加载先前为app A构建的js捆绑包,从而使app A呈现在页面上
我现在还没有包括任何代码片段,因为代码是相当标准的基本React/Redux代码,我质疑的是方法本身。我能够通过修改应用程序A入口点中的代码并更改应用程序的构建方式来解决这个问题 在修复之前:
- 应用程序A是作为一个自包含、自呈现的应用程序构建的
- 应用程序B的组件A正在其
方法中添加应用程序A的捆绑脚本标记componentWillMount()
- 应用程序A的条目JSX正在立即执行
,无法从应用程序B中卸载它ReactDOM.render()
- 应用程序A构建为库(在网页包配置中指定)
- 应用程序A的条目JSX定义了库接口,公开了自定义的
、new()
和render()
方法unmount()
- 应用程序A的捆绑脚本标记在应用程序B的index.html中硬编码
- 应用程序B的组件A:
- 在
中:实例化应用程序A组件willmount()
- 在
中:调用应用程序A的render()componentDidMount()
- 在
:调用应用程序A的componentWillUnmount()
,它调用unmount()
ReactDOM.unmountComponentAtNode()
- 在
对于任何感兴趣的人来说,该修复程序都是从我最终遇到的以下文章中得到启发的:感谢您的解释,但如果您能发送一些代码来查看此实现并查找问题,那就太好了。出于好奇,你为什么要同时使用这两种软件来做一个redux应用程序呢?您可以获取一个应用程序的JSON或状态,然后将其放到另一个应用程序上,这样您就有了一个单一的源代码,复杂性更低,问题更少。@Jan Cássio:谢谢您的回复。我决定做更多的研究,最终解决了这个问题(见下面我的答案)。至于你的问题,假设我理解正确,托管应用程序(B)是一个现有的应用程序,因此我无法控制其代码,而应用程序A是一个独立的单页应用程序,以便与其他应用程序更简单地集成。