2016-12-30 216 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文檔。 –