[英]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.