dva 路径中# 怎么去掉

比如我要访问的是首页 http://localhost:3000/
地址栏显示的是 http://localhost:3000/#/
这样子就很丑了,请问要怎么去掉?

还有就是看到vue教程中的demo 路径中也是带#,路径中带#这样做有什么意义吗

阅读 5.9k
4 个回答
  1. 页面不用重新发起HTTP请求
  2. 没有兼容问题,如果不带#号,需要使用html5的historyAPI,老浏览器不兼容

刚刚爬完这个坑,我真的不能理解为什么那么多人不停地回答一些不能用的答案,能不能自己试试再来写?

首先,经过本人测试,
import { BrowserHistory } from 'dva/router' 这个 history 是不能去掉#的!!!
应该使用
import { createBrowserHistory } from 'history'
注意这里的 createBrowserHistory 是一个方法,执行后返回一个 history 对象,和上面那个 BrowserHistory 不同!
然后在dva的初始化对象里写:
const app = dva({ history: createBrowserHistory() })

以下是我的代码:

import React from 'react';
import dva from 'dva';
import { BrowserRouter as Router, Route } from 'dva/router';
import { createBrowserHistory } from 'history';
import { getModels } from './utils/combiner';
import './global.scss';

import mainRect from './pages/mainRect/main';

const app = dva({
  history: createBrowserHistory()
});

app.router(() =>
  <Router>
    <Route path={'/'} component={mainRect} />
  </Router>
);

getModels().map((model) => app.model(model));

app.start('#main-rect');

带#的url 一般是hasHistory,所以你只需要设置相应的history就可以了。

新手上路,请多包涵

在index.js里
import { createBrowserHistory as createHistory } from 'history'

const app = dva({
history:createHistory()
});

ps:dva2.3.1版已不能直接使用history:browserHistory来修改hash路由

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题