【react|使用React-router时如何去掉url上的#号】Router组件的history属性,用来监听浏览器地址栏的变化,并将URL解析成一个地址对象,供 React Router 匹配。
history属性,一共可以设置三种值。
browserHistory
hashHistory
createMemoryHistory
如果设为hashHistory,路由将通过URL的hash部分(#)切换,URL的形式类似example.com/#/some/path。
import { hashHistory } from ‘react-router’
render(
,
document.getElementById(‘app’)
)
如果设为browserHistory,浏览器的路由就不再通过Hash完成了,而显示正常的路径example.com/some/path,背后调用的是浏览器的History API。
import { browserHistory } from ‘react-router’
render(
,
document.getElementById(‘app’)
)
但是,这种情况需要对服务器改造。否则用户直接向服务器请求某个子路由,会显示网页找不到的404错误。
如果开发服务器使用的是webpack-dev-server,加上–history-api-fallback参数就可以了。
$ webpack-dev-server --inline --content-base . --history-api-fallback
createMemoryHistory主要用于服务器渲染。它创建一个内存中的history对象,不与浏览器URL互动。
const history = createMemoryHistory(location)
2、node解决方案
如果你使用的是 node 作为服务器,将服务器端的路由最下面的配置为 * 。
// handle every other route with index.html, which will contain
// a script tag to your application’s JavaScript file(s).
app.use(’*’, function (request, response){
response.sendFile(path.resolve(__dirname, ‘public’, ‘index.html’))
})
推荐阅读
- vue-连载教程|vue项目搭建连载教程+全家桶详解----第一节(环境配置)
- 前端|面试官(谈谈Vue和React的区别())
- react|高德地图的使用及自定义图标
- React|【React Native开发】React Native控件之RefreshControl组件详解(21)
- React|React Native开源项目-嘎嘎商城客户端(持续更新中)
- 工作与生活|2016总结,真正新的里程碑和新起点
- React|【React Native开发】React Native应用设备运行(Running)以及调试(Debugging)(3)
- React|【React Native开发】React Native控件之ListView组件讲解以及最齐全实例(19)
- React|React Native控件之PullToRefreshViewAndroid下拉刷新组件讲解(20)
- React|【React Native开发】React Native控件之Text组件讲解(9)