Javascript 如何创建history.pushState(),然后立即转到URL栏中的页面?
我用谷歌搜索自己,但没有成功 在React路由器环境中,当用户单击按钮时,我尝试切换到新的视图页面(即客户端) 我可以使用history.pushState()将正确的URL放入浏览器的导航栏中,但我不知道如何将其转到该URL。立即点击刷新按钮正是我想要的,但这当然不是一个真正的解决方案 如此接近,却又如此遥远。我希望有办法做到这一点 以下是历史推线:Javascript 如何创建history.pushState(),然后立即转到URL栏中的页面?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我用谷歌搜索自己,但没有成功 在React路由器环境中,当用户单击按钮时,我尝试切换到新的视图页面(即客户端) 我可以使用history.pushState()将正确的URL放入浏览器的导航栏中,但我不知道如何将其转到该URL。立即点击刷新按钮正是我想要的,但这当然不是一个真正的解决方案 如此接近,却又如此遥远。我希望有办法做到这一点 以下是历史推线: history.pushState('/slides/'+'图像集路径') 路由器配置: ReactDOM.render(( <Rou
history.pushState('/slides/'+'图像集路径')
路由器配置:
ReactDOM.render((
<Router history={ browserHistory }>
<Route path="/" component={ osconSPA } history={ browserHistory }>
<IndexRoute name="home" component={ Home }/>
<Route path="browse" component= { Browse }/>
<Route path="zoomer" component= { Zoom }/>
<Route path="zoomer/:imageId" component={ Zoom }/>
<Route path="upload" component={ Upload }/>
<Route path="slides" component={ SlideShow } />
<Route path="slides/:viewSet" component={ SlideShow } />
<Route path="*" component={ Home }/>
</Route>
</Router>
), document.getElementById("main"))
ReactDOM.render((
),document.getElementById(“main”))
我一直在寻找,我想我找到了一个解决方案,或者至少到目前为止,它似乎工作得完美无缺:
history.pushState('/slides/' + 'path to an imageset')
location.reload()
上述策略虽然可行,但会导致服务器跳闸,这是我绝对不想做的
答案就在这篇文章里
以下方法适用于React路由器版本2.2.0;这篇文章还讨论了其他版本的解决方案
基本上,在创建类之后,您可以为组件定义contextTypes
NewClass.contextTypes = {
router: React.PropTypes.object.isRequired
}
然后将新路径推送到路由器:
handleClick() {
this.context.router.push('/route/path')
}
我希望有人能够就contextTypes对象在那里做什么发表评论?您能发布您的React路由器配置吗?您使用的是browserHistory还是HashHistory?您使用的是
链接
组件吗?我还认为您正在寻找browserHistory.push('path/to')
我正在使用browserHistory。不链接;我试图在用户单击按钮而不是链接时移动到新的查看页面。除了在我使用history.pushState()之后,正确的URL现在在导航栏中,但是我必须刷新窗口来发布页面之外,它工作得非常好。您是否使用redux
?如果是这样,您可以使用react router redux库,它处理位置状态,因此您可以推送新路由,它将更新浏览器历史记录和用户位置。