我目前正在切換我的web應用程序以作出反應。舊的位於here。react-router v4:以編程方式觸發重定向(無需呈現<Redirect/>)
我想要做的是:當用戶輸入玩家的用戶名到文本字段並提交時,應用程序將重定向到相應的路線(/:username
),並且文本字段被清除。
在反應的版本,這是我在做什麼目前: https://github.com/AVAVT/g0tstats-react/blob/master/src/components/SideBar/SearchBox.js
submit(event){
...
this.setState({
redirect : true
});
...
}
而且
render(){
...
{
this.state.redirect && (
<Redirect to={`/${this.state.username}`} push />
)
}
}
這還挺工作。但有兩件事我不喜歡它:
- 我渲染一個元素爲了重定向。這感覺很愚蠢和迂迴。它在將來會發現潛在的錯誤。
- 我被卡住的文本字段未清除。因爲如果我將state.username設置爲null,
<Redirect />
組件將不會正確重定向。事實上,我沒有對重定向發生的時間有任何精確的控制(除非我以另一種迂迴的方式進行)。
我已經搜索過替代品,但找不到一個。 withRouter
不起作用,因爲<SearchBox />
不是<Route />
,並且不會收到歷史道具。
那麼我如何在react-router v4中說「重定向我到那個地方」呢?
那麼從渲染你的' '的組件發送路由道具怎麼樣?據推測,如果它沒有得到道具,因爲它沒有被直接路由到,那麼它的父母應該被路由到。 –
'this.context.transitionTo(...)'是你如何編程重定向,如果我正確地閱讀你的問題。 – 1252748
@promisified實際上,不,SearchBox的側邊欄內,這是' s'' –
AVAVT