我有一个使用 react-router 1.x 和 hashHistory 的 bootstrap+react 主题,我想删除散列,所以遵循了这个建议。最初我尝试在使用 1.x 版本时执行此操作,但我无法执行此操作,因此我决定将 react-router 升级到 2.x。安装 react-router 2.x 后,该应用程序工作正常,因为它仍在使用 hashHistory 但当我用 browserHistory 替换它时:
- 它显示了一个灰色的屏幕
- 应用程序的 HTML 中只有
<noscript data-reactid=".0"></noscript>
标签 - React Developer Tools 向我展示了路由器
null
内部有一个 - 我还检查了网络选项卡,所有文件都已正确下载,并且内容正确
令人惊讶的是,JavaScript 控制台中没有打印任何内容,没有错误/没有警告(我对此感到非常震惊,但我是新的 React,我想知道在这种情况下该怎么做)。这是我对以下内容的更改
Router.jsx
:import React from 'react' import {render} from 'react-dom' -import {Router} from 'react-router' +// import {Router} from 'react-router' +import { Router, Route, Link, browserHistory } from 'react-router' +// import { useRouterHistory } from 'react-router' +// import { createHashHistory } from 'history' +// import { createBrowserHistory } from 'history'` import History from '../components/layout/navigation/classes/History.js'; import Routes from './Routes.jsx'; +// const appHistory = useRouterHistory(createHashHistory)({ queryKey: false }) + var rootInstance = render(( - <Router history={History}> + <Router history={browserHistory}> {Routes} </Router> ), document.getElementById('smartadmin-root'));`
后端使用Phoenix Framework。
稍后编辑:这里你有有效的hashHistory
版本
https://gitlab.com/blockbuster/react-router-2-with-hash-working/tree/master
这是没有的browserHistory
版本:
https://gitlab.com/blockbuster/react-router-2-with-browserHistory-not-working/tree/master
两者的react代码都可以在src
目录下找到。
要运行你需要有应用程序Elixir
,Phoenix
并安装PostgreSQL中,获得后端的依赖(运行$ mix deps.get
),得到前端依赖条件(npm install
和bower install
),更改数据库的用户名和密码config/dev.exs
,创建和迁移数据库mix ecto.create && mix ecto.migrate
最后运行mix phoenix.server
。