【问题标题】:React-router cannot find components of other pages in the appReact-router 在应用中找不到其他页面的组件
【发布时间】:2017-02-10 17:04:05
【问题描述】:

我正在尝试设置一个测试组件,它基本上是一个导航栏和两个用于导航的组件。这是它的样子:

class Page1 extends Component{
  render(){
    return (<div>Page1</div>);
  }
}

class Page2 extends Component{
  render(){
    return (<div>Page222</div>);
  }
}

class App extends Component{
  render(){
        console.log('children: ', this.props.children);
    return(
      <div>
        <NavigationBar/>

        {this.props.children}
      </div>

    );
  }
}

ReactDOM.render(
  <Router history={browserHistory}>
    <Route component={App} >
      <Route path="/" component={App}/>
      <Route path="page1" component={Page1}/>
      <Route path="page2" component={Page2}/>
    </Route>
</Router>,
    document.getElementById("app")
); 

导航栏只是一个通用的引导导航栏,看起来不错。 我遇到的问题是当我导航(或单击 Page1 或 Page2 按钮)时,我收到消息:

无法获取 /page1

即使组件和路由都已设置好,并且链接本身也似乎没问题。

我还应该提到 this.props.children 也是 null。

关于我做错了什么有什么想法吗?

【问题讨论】:

  • 也许这与您在 Router 渲染块中将 App 作为孩子传递给 App 的事实有关?

标签: javascript reactjs react-router react-jsx react-bootstrap


【解决方案1】:

path="/" 添加到主App 路由。此外,您在配置中两次渲染 App 组件。这将无法正常工作。您应该将其更改为:

class Page1 extends Component{
  render(){
    return (<div>Page1</div>);
  }
}

class Page2 extends Component{
  render(){
    return (<div>Page222</div>);
  }
}

class Home extends Component {
    render(){
      return(<h1>I AM HOME</h1>);
    }
}

class App extends Component{
  render(){
    console.log('children: ', this.props.children);
    return(
      <div>
        <NavigationBar/>

        {this.props.children}
      </div>
    );
  }
}

ReactDOM.render(
    <Router history={browserHistory}>
      <Route path="/" component={App} >
        <IndexRoute component={Home} /> //Being a different component
        <Route path="page1" component={Page1}/>
        <Route path="page2" component={Page2}/>
      </Route>
    </Router>,
    document.getElementById("app")
);

【讨论】:

  • 我试着把它改成你建议的样子。如果没有到“/”的路由路径,它会抱怨位置“/#/”与任何路由都不匹配。当我确实包含它时,嗯......我得到与以前相同的错误
  • 哦,抱歉,看到我的更改,您需要将 path="/" 添加到主 App Route。
  • @ZachStoltz 将 ^^^ 添加到答案中,这是主要问题。
  • @gfullam 添加 :)
  • 好吧,所以我才意识到,如果我在 Home 组件中放置一个 Link to,它确实有效。这可能意味着我的问题出在导航栏上,但对于这个特定的主题,我想它已经解决了。谢谢/
猜你喜欢
  • 2016-01-16
  • 2019-01-21
  • 2016-01-18
  • 2022-10-11
  • 2020-04-07
  • 1970-01-01
  • 2021-10-07
  • 2021-09-06
  • 1970-01-01
相关资源
最近更新 更多