所以情况 - 我想创建应用程序\框架,它将利用React和用户\第三方构建组件(Widgets)。我目前的观点是,我将有一个根组件,它将列出加载的第三方组件。像这样:将(外部)组件动态加载到React.js
class Root {
constructor(p){
this.state = {loadedWidgets: [<Chat/>, <Mail/>, <Notes/>]}
}
render(){
return(
<div>
<Header/>
<Body>
{this.state.loadedWidgets.map(WidgetName => <WidgetName />)}
</Body>
</div>
)
}
}
但我遇到我无法理解或找到如何解决两大问题:
- 我将如何加载(进口)的部件不是,如果我要硬代码他们到根组件? (我想我可以做一些钩子,这样以后用户安装,它会被添加到状态,不知何故窗口小部件)
- 为什么阵营不会呈现真正的组件方式:
(代码列表结束标记正常工作)
render(){
const NameOfACustomComponent = this.state.loadedWidgets[0]
return(<div><NameOfACustomComponent/></div>
}
渲染后它将是一个自定义DOM标记,而不是现有的React组件。
我想要构建的是Chrome为用户经常使用的小部件\应用替换新页面的扩展,同时为开发人员提供了使用纯React.js以足够简单的方式添加新小部件的可能性和一些整合的钩子。
编辑。根据this issue找到第二个问题的答案如果您有对其类或函数的引用(ES5 React样式),则React允许创建任意组件。因此,对于2和1问题的解决方案之一是在窗口对象中有一些注册表,其中任何组件都可以将其自身添加并提供给框架。虽然它应该以严格的Class实例方式完成,以提供一种方法来添加\只删除Widget本身,而不是它们的完整列表。
第三方组件是由React? –