vue-router默认hash模式,使用 URL 的 hash 来模拟一个完整的 URL,地址是:http://localhost:8080/#/
改路由模式为history后,地址是:http://localhost:8080/
//router>index.js中 export default new Router({ mode:'history', routes: [ ] })多个页面渲染在同一个组件,复用更加高效,
但是页面没有刷新,数据不会更新,钩子函数不会再调用
监听 //获取数据的代码,在监听事件里监听路由变化时执行一次 //不用放在created内刷新页面 //用重新请求数据代替页面刷新 watch:{ $route(to,from){ this.getD(); } }, methods:{ getD(){ console.log('获取一遍数据'); } } beforeRouterUpdate,组件内的导航守卫 beforeRouterUpdate(to,from,next){ this.getD() next() }, methods:{ getD(){ console.log('获取一遍数据'); } }会报错,解决方法:
添加以下代码到router的index.js里
<button @click="$router.push('/first')">first</button> //解决: //router的index.js里 //编程式跳转自身路由出错时 const originalPush = Router.prototype.push Router.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => err) }