2016-03-02 102 views
5

我正在构建一个简单的ReactJS页面(我的第一个),并且我遇到了路由问题。浏览器栏上的链接进行更新(在控制台没有错误),但网页不刷新:ReactJS - 路由更新链接,但不刷新页面

App.js是:

return(
    <div id="container"> 
     <Dashboard>{this.props.children}</Dashboard> 
    </div> 
); 

仪表板是在动态内容在中间

呈现的主页
return(
    <!-- code for navbar, sidebar etc --> 
     ... 
     <Link to="/memory">Memory</Link> 
     .... 
    <div id="page-wrapper" className="page-wrapper"> 
     {this.props.children} 
    </div> 
); 

所以我创建了两个小部件(Home是在开始时显示和Memory

主页:

render() { 
    return(
     <div className="row"> 
      HOMEPAGE 
     </div> 
    ); 
} 

内存:

render() { 
     return(
      <div className="row"> 
       MEMORY 
      </div> 
     ); 
    } 

路由器是非常简单的:

<Route component={App}> 
    <Route path='/' component={Home}> 
     <Route path='/memory' component={Memory} /> 
    </Route> 
</Route> 

当我去到我的家庭服务器(本地主机:3000)我HOMEPAGE显示,但当我点击Memory链接什么都没有发生......网址更改但Memory组件未呈现...

UPDATE

感谢的答复我有,这是一个工作版本:

板 - >删除

App.js

通过这种方式将导航只包含相对于导航的部分(顶部栏和左侧栏)。

路径已改变:

<Route> 
    <Route path='/' component={App}> 
     <Route path='/memory' component={Memory} /> 
    </Route> 
</Route> 

现在,当我去家里(本地主机:3000),变量this.props.children是不确定的,我呈现在主页组件(感谢{this.props.children || <Home />})。

在所有其他情况下,我呈现由Link

+2

如果在路由器内存路由中删除'/'会怎么样?所以那行应该是'' –

回答

2

尝试这种解决方案:

路线:

<Router> 
    <Route path="/" component={App} > 
     <Route path='/memory' component={Memory} /> 
    </Route> 
    </Router> 

和 '应用' 组件:

return (
     <div id="container"> 
     <Dashboard/>{this.props.children || <Home />} 
     </div> 
); 

不要忘记,你需要连接 '家庭' 成分在App中。我可以给你完整的工作例子。

+0

在这种方式发生,点击内存时,内存页面显示.. 。但在“全屏”,我失去了仪表板作为容器和dymanic内容,应该进入它... – Mistre83

+1

@ Mistre83哦,我修理路线。现在请检查。 – skriming

+0

我试着做一些改变阅读你的代码和这个我终于有一个工作版本(我不知道如果以后我会有其他问题:D)检查我的更新在原始线程 – Mistre83

0

提供正确的成分,我认为你的问题是,你的记忆组件布线路径不需要斜线。除此之外,您的设置与我的设置相同。

<Route path='memory' component={Memory} /> 
+0

没有什么变化,我已经试过这种方式:(我注意到的是,如果我直接进入localhost:8080/memory请求到达服务器,但页面不刷新如果我从链接去内存,请求不会到达服务器..... – Mistre83