2016-12-30 220 views
1

所以,我明明知道如何做到这一点:阵营路由器改变状态,而无需使用链接

<Link to="/picture/123" state={{ fromDashboard: true }} /> 

而且你可以通过也通过它在改变状态

我知道,如果不这样做要使用链接,即要以编程方式定位,那么你就必须使用:

browserHistory.push('/url'); 

但是,什么是替代,改变路由器的状态?

原来这就是我目前知道:

  • 使用“链接”进入新的路由(已知)
  • 使用“链接”状态传递(已知)
  • 另类功能进入新的路由(已知)
  • 复用功能在路由器状态(???)

回答

1

您所使用ABO的<Link>道具传递实际上是过时的。当它不仅仅是您要用于导航的pathname时,to prop应该是一个对象,它被称为“位置描述符”。

<Link to={{ pathname: '/picture/123', state: { fromDashboard: true } }} /> 

同样,您可以将位置描述符推送到历史记录。

browserHistory.push({ 
    pathname: '/picture/123', 
    state: { fromDashboard: true } 
}); 
+0

它的工作原理,我不知道为什么这个例子不是在文档上。无论如何,你如何将变量纳入路径名?即旧的例子就像'comment/$ {this.props.num}'一样。 – pizzae

+0

同样的方法,用模板文字{pathname:'comment/$ {this.props.num}'}来构建字符串。 –

+0

文档可能不包含'browserHistory'示例中的位置描述符,但它们包含在'withRouter'中https://github.com/ReactTraining/react-router/blob/v3.0.0/docs/API.md #pushpathorloc和'Link' https://github.com/ReactTraining/react-router/blob/v3.0.0/docs/API.md#to文档。 –