【问题标题】:React Router - Nested Routes Not RenderingReact Router - 嵌套路由不渲染
【发布时间】:2017-06-07 09:26:54
【问题描述】:

我目前正在使用 ReactJS 进行开发,我正在尝试了解 React Router,到目前为止它进展顺利,因为由于某种原因我的嵌套路由不会呈现。

基本上,当我导航到“/home”时,我希望 NavBar 呈现并在下方呈现欢迎消息,但由于某种原因,只呈现了 NavBar,它忘记了呈现欢迎消息。我哪里出错了?

请参阅下面的代码示例。

谢谢。

ReactDOM.render((
  <Router history={hashHistory}>
    <Route path="/" component={Login}/>
    <Route path="/signup" component={Signup}/>
    <Route path="/companyregistration" component={CompanyRegistration}/>
    <Route path="/adduserdetails" component={AddUserDetails}/>
    <Route component={NavBar}>
      <Route path="/home" component={Welcome} />
    </Route>
  </Router>
), document.getElementById("app"))

编辑 - 导航栏:

export default React.createClass({
  render() {
    return (
      <div>
        <AppBar
            showMenuIconButton={false}
            title={<img src={"img/logo-nav.png"}/>}
            iconElementRight={
                <RaisedButton 
                  onClick={signOut} 
                  label="Sign Out" 
                  primary={true} 
                  style={styles.button}         
                  icon={ 
                      <FontAwesome 
                        className='super-crazy-colors' 
                        name='sign-out' 
                        style={{ color: '#B71C1C' }}
                      />
                    }
                />
            }
          /> 
          {console.log(this.props.children)}
          <div>{this.props.children}</div>
      </div>
    );
  }
});

仍然没有渲染,但是 console.log(this.props.children) 正在向控制台返回“未定义”。

【问题讨论】:

    标签: reactjs web react-router


    【解决方案1】:

    外部路由处理程序(在本例中为NavBar)是父组件,内部路由处理程序(Welcome)是子组件。

    为了渲染Welcome,必须在NavBarrender方法中输出this.props.children

    然而,NavBar 这个名字听起来更适合作为一个可重用 组件而不是一个 组件。另一种方法是在Welcome 内渲染NavBar

    【讨论】:

    • 我已经为 navbar.js 添加了代码,你能告诉我如何实现 this.props.children。对此很新,对不起。我知道我必须创建一个构造函数,但我不知道该怎么做。
    • 在 NavBar 渲染方法中只是在某个地方有这个:&lt;div&gt; {this.props.children} &lt;/div&gt;
    • @Jayce444 我现在已经完成了,嵌套路由仍然没有渲染。没有编译错误,但 {console.log(this.props.children)} 将“未定义”返回到控制台。不知道我哪里出错了。
    猜你喜欢
    • 2017-11-15
    • 2022-01-13
    • 1970-01-01
    • 2018-06-06
    • 2021-12-28
    • 2017-12-20
    • 2018-06-27
    相关资源
    最近更新 更多