React路由器不是渲染组件
React router not rendering component
这是我的App.js的代码
render() {
return (
<Router history={hashHistory}>
<Route path='/' component={()=>{return <Container videoConf = {this.state.videoConferenceCapable}/>}}>
<IndexRoute component={SourcesContainer} />
<Route path='/videoConference' component={()=>{return <VideoConference deviceID="57ab270b59edc845274aae09"/>}} />
</Route>
</Router>
)
}
和Container.js
export default class Container extends React.Component {
render() {
const NavBar = this.props.videoConf ? <div><Nav/></div> : <span></span>
return (
<div className="container">
{NavBar}
<div>
{this.props.children}
</div>
</div>
);
}
}
我遇到的问题是容器组件没有被渲染,随后它的子组件也没有被渲染。如果我删除Container组件,那么VideoConference组件就会毫无问题地加载。因此,我认为问题在于容器组件的呈现方式。谢谢你的帮助。
我从来没有在router中看到过这个组件的实例化
<Route path='/' component={()=>{return <Container videoConf = {this.state.videoConferenceCapable}/>}}>
路由器组件是顶级组件,只需要url中的props,尝试这样做
<Route path='/' component={Container}>
否则看起来你的应用程序逻辑有问题。
试着这样做:
export default Application extends React.Component{
static instance;
constructor() {
Application.instance = this;
}
render(){
return <Router />
}
}
并尝试使用静态实例从Container访问应用程序属性。否则,你可以分配一些类似'context'的对象,它将被所有组件访问。
如果你想把props传递给子路由,你可以在顶层组件中这样做。
改变{this.props.children}
{React.cloneElement(this.props.children, { videoConf : this.state.videoConferenceCapable })}
但是要注意,这个属性会传递给所有的子属性
相关文章:
- 如何在react路由器的组件中使用参数
- 制作一个高阶组件,用TypeScript实现反应中继和反应路由器的交互操作
- 使用react路由器隐藏组件
- 如何在使用ui路由器时构造angular.js应用程序组件
- Angular 2:在另一个组件上定义一个路由器,而不是引导的
- 当登录状态为组件状态时,如何使用react路由器实现依赖登录的路径
- Emberjs-如何在组件方法中获取当前路由器路径
- 反应路由器 - 将方法传递给子组件
- 反应路由器提供给“路由”的无效道具“组件”
- 将变量从反应路由器传递到子组件
- 如何将自定义组件与反应路由器路由转换一起使用
- 如何在反应路由器中将子路由定义为反应组件
- angular2新路由器不会在页面加载时同时加载2个组件(头和内容)
- 如何使用react路由器将顶级组件状态传递给Routes
- 将路由器代码添加到组件时分析错误?(v2.0.0-beta.0)
- 如何使用react路由器处理带有lazyloaded组件的面包屑
- 如何使用ui路由器在组件驱动架构中定义控制器
- 角度组件路由器从URL中删除#
- 将组件路由器与升级适配器配合使用
- Angular2 v3组件路由器:TypeError: Cannot read property 'split&