【发布时间】:2017-11-15 21:43:18
【问题描述】:
我目前正在切换我的网络应用程序以做出反应。旧的位于here。
我要做的是:当用户在文本字段中输入玩家的用户名并提交时,应用程序将重定向到相应的路由(/:username),并且文本字段被清除。
在 react 版本中,这是我目前正在做的事情: 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 中说“现在将我重定向到那个地方”?
【问题讨论】:
-
从渲染你的
<SearchBox />的组件发送路由道具怎么样?据推测,如果它不是获得道具的人,因为它没有直接被路由到,那么它被路由到的父级应该。 -
this.context.transitionTo(...)是如果我正确阅读您的问题,您如何进行程序化重定向。 -
@promisified 其实不是,边栏里面的SearchBox,是
<Route>s的兄弟 -
@1252748 如果您能向我展示一个工作示例,我将不胜感激。这几天我尝试了很多东西,包括
this.context。
标签: javascript reactjs redirect react-router react-dom