Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建history.pushState(),然后立即转到URL栏中的页面?_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 如何创建history.pushState(),然后立即转到URL栏中的页面?

Javascript 如何创建history.pushState(),然后立即转到URL栏中的页面?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我用谷歌搜索自己,但没有成功 在React路由器环境中,当用户单击按钮时,我尝试切换到新的视图页面(即客户端) 我可以使用history.pushState()将正确的URL放入浏览器的导航栏中,但我不知道如何将其转到该URL。立即点击刷新按钮正是我想要的,但这当然不是一个真正的解决方案 如此接近,却又如此遥远。我希望有办法做到这一点 以下是历史推线: history.pushState('/slides/'+'图像集路径') 路由器配置: ReactDOM.render(( <Rou

我用谷歌搜索自己,但没有成功

在React路由器环境中,当用户单击按钮时,我尝试切换到新的视图页面(即客户端)

我可以使用history.pushState()将正确的URL放入浏览器的导航栏中,但我不知道如何将其转到该URL。立即点击刷新按钮正是我想要的,但这当然不是一个真正的解决方案

如此接近,却又如此遥远。我希望有办法做到这一点

以下是历史推线:
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库,它处理位置状态,因此您可以推送新路由,它将更新浏览器历史记录和用户位置。