将react组件动态插入到另一个react组件中
Dynamically insert react components into another react component
现在我有一个侧边栏,我想用它来处理各种形式和信息。我正在使用全局事件系统来触发侧边栏的打开,但我不确定如何将react组件注入到侧边栏react组件中。
我开始尝试这个
componentWillMount: ->
window.toggleSidebar = (react_component)=>
React.renderComponent(react_component(), document.getElementById('sidebar-content'))
@toggleSidebar()
但是,一旦安装了所有组件,这就不起作用了,因为您无法将渲染组件调用到另一个组件内的元素中。
那么,有没有一种公认的方法可以将任何反应成分转化为另一种成分?
您实际上并不想传递组件实例,而是希望传递组件工厂和它可以用来渲染组件的数据。
events.emit('sidebar-change-request', {component: Foo, props: obj, open: true});
在侧边栏组件中,它将监听事件:
getInitialState: -> component: React.DOM.div, props: {}, open: false
# standard event emitter stuff
componentDidMount: ->
events.addListener 'sidebar-change-request', this.handleSidebarChangeRequest
componentWillUnmount: ->
events.removeListener 'sidebar-change-request', this.handleSidebarChangeRequest
# simply apply the payload to state
handleSidebarChangeRequest: (payload) ->
this.setState payload
# dynamically render stuff
render: ->
if this.state.open
React.DOM.div {className: "sidebar"},
this.state.component this.state.props
else
React.DOM.div null
如果你需要从侧边栏中更新的组件中获取一些信息,你可以通过props向该组件传递回调;或者该组件可以发出事件。
相关文章:
- React组件等待所需道具进行渲染
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- react组件中的绑定方法
- 加载服务器端渲染的React组件后执行脚本
- 如何基于依赖性导入React组件
- 可以't在我的React组件中加载图像
- jsx-React组件中的格式化编号
- 在进行服务器端渲染时,我可以向客户端发送React组件吗
- 使用jquery在react组件内部设置样式可以吗
- 为什么我不能将键映射到 React 组件上
- webpack样式加载器-在react组件上导入不同的样式,而无需重写
- 无法将react组件作为属性传递给另一个组件
- 继承React组件的正确方式
- 在JSX中围绕React组件封装高阶组件(HOC)
- 根据React组件的名称渲染该组件
- react组件的正确命名规范
- 在另一个文件夹中显示React组件
- AJAX 请求没有在我的 React 组件中设置 this.state.data
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件