原來我的情況是一個相當有邊緣的情況,因此無法通過react-router很好地處理。
由於應用程序使用基於散列的歷史(/#/path
),查詢參數就是不能,如果他們不通過onEnter
的nextState
哈希之前逮住。
我最終做的是處理IndexRouter
內部的任何可能的查詢。
<IndexRoute component={LoginPage}
onEnter={
(nextState, replaceWith) => {
console.log(nextState);
var obj = qs.parse(document.location.search.split("").slice(1,document.location.search.split("").length).join(""));
if(obj.gameid){
document.location.href = document.location.origin + document.location.pathname + "#/game/" + obj.gameid;
}
}
}
/>
這種方式似乎最好把路由邏輯內的容器應用程序的componentDidMount
因爲路由邏輯Route
內部實際上屬於。它還確保所有後續調用將正確處理。
向/ u/mrkre表示感謝,向onEnter指示我。
您可以嘗試檢查componentDidMount中的this.props.location.query,並在那裏進行重定向,例如, 'if(this.props.location.query.gameid)' – mrkre
或者,您可以查看路由的onEnter方法,該方法允許訪問nextState.location.query參數,並使用replace方法進行導航。 – mrkre