无法以编程方式更改 react-router 中的路由

Posted

技术标签:

【中文标题】无法以编程方式更改 react-router 中的路由【英文标题】:Unable to programmatically change route in react-router 【发布时间】:2016-05-23 03:25:08 【问题描述】:

我正在为我的单页应用程序路由使用反应路由器。我有多个组件,它们会根据点击等用户事件而改变。

现在的问题是,对于 IndexRoute,我的路由工作正常,但对于后续路由,它会中断。根据我的分析,react-router 完美地渲染了第二个组件,但 ReactDOM.render 方法在成功渲染后将 '#' 添加到 url。它混淆了 react-router 并使其呈现默认路由。

谁能帮我解决这个问题?

注意:我想知道为什么 ReactDOM.render 会在 url 中添加空的 '#'

【问题讨论】:

你能编辑你的问题并添加一点代码吗? 【参考方案1】:

可能是你没有启用 React-Router 提供的 'browserHistory' 功能(上次我检查,它默认为 'hashHistory')。

尝试将其添加到主文件(React 应用的客户端入口点):

import  render  from 'react-dom'
import  Router, browserHistory  from 'react-router'
import routes from './routes'

/* The rest of your other code... */

render(
  <Router history=browserHistory routes=routes />,
  document.getElementById('app')
)

然后看看你是否仍然遇到这个问题。

【讨论】:

以上是关于无法以编程方式更改 react-router 中的路由的主要内容,如果未能解决你的问题,请参考以下文章

无法更改以编程方式生成的 UIView 中的标签

在 React-Router V4 中以编程方式设置路由参数最终会出现“找不到页面”

React JS:以编程方式使用 React-Router 发送道具 [重复]

如何在 react-router 中以编程方式进行服务器端路由?

在 React-Router v4 中以编程方式导航

以编程方式更改 highcharts 中的图表标题