簡體   English   中英

如何從組件外部訪問路由參數?

[英]How to access the routing params from outside a component?

如何從位置計算參數。 我正在使用redux並重新選擇。 我曾經在一些選擇器中訪問router.params。 現在,我只能訪問routing.location。

我試圖在react-router中找到一個輔助函數,但沒有找到。

謝謝你的幫助!

不幸的是,react-router很難使用。 我個人執行以下變通方法:在主路由組件(App)中, <Route path="/" component={App} />定義兩個方法:

  constructor(props) {
    super(props);
    globalModel.router.set(props);
  }

  componentWillReceiveProps(nextProps) {
    globalModel.router.set(nextProps);
  }

所以我在globalModel中有當前的路由器道具(可能是磁通存儲)。

路由器與Redux沒有關系,並且無法向您提供諸如state.router.params東西。

您可能會誤用仍然可以使用的社區包之一,例如redux-router 您可能切換到了更穩定的react-router-redux ,但故意無法從該狀態訪問路由參數。 這兩個庫在各自的自述文件中都說明了它們的區別,因此,我建議您閱讀兩個都更適合您需要的文摘。

您不必使用任何一個庫!

通常,我們建議您僅在路由處理程序組件中使用從路由器本身收到的道具。 確保已連接,並使用第二個參數mapStateToProps讀取路由參數:

function mapStateToProps(state, ownProps) {
  const id = ownProps.params.id
  return {
    post: state.posts[id]
  }
}

同樣, 在選擇器本身上定義第二個props參數時可以使用Reselect訪問props。 重新選擇自述文件描述了該用例 從技術上講,您仍在傳遞組件中的參數,但是選擇器可以通過這種方式訪問​​它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM