解决vue多个路由共用一个页面的问题


Posted in Javascript onMarch 12, 2018

在日常的vue开发中我们可能会遇见多个路由需要共用一个页面的需求,特别是当路由是通过动态添加的,不同的路由展示的东西只是数据不同其他没有变化。例如:

let routes = [
  {path:"/zhanshan",
  components:Person,
  },
  {path:"/lisi",
  components:Person,
  },
  {path:"/wangwu",
  components:Person,
  }
]

这种情况的时候,我们发现,其实我们的页面在第一次加载成功后就不会再加载了。所以页面一直显示第一次加载的数据,给人的赶脚好像路由没有生效,而我们通过观察浏览器地址栏中的变化可以确定的是这和路由没关系,这对刚刚开始使用的vue的同学可能会产生一点点困扰,其实这和页面的声明周期是相关的,这种情况出现的原因是因为页面在加载后他的大多数钩子函数(mounted,computed…)就不会再次出发了,所以导致页面感觉没有跳转。

一道这种业务需求其实也比较好处理,其实我们不需要页面切换,我们只需要页面中的数据发生改变就好了,我们可以在页面中监听路由地址的变化,当地址变化的时候,我们就重新加载数据。

watch:{
 "$route":function(to,from){
   //from 对象中包含当前地址
   //to 对象中包含目标地址
   //其实还有一个next参数的,这个参数是控制路由是否跳转的,如果没写,可以不用写next()来代表允许路由跳转,如果写了就必须写next(),否则路由是不会生效的。
 }
}

每当路由发生变化的时候上面的函数都会被触发,我们可以在这个函数中对页面的数据进行重新加载的操作。如果页面结构变化很大,还是建议单独新建一个不同的页面。

上面的问题可能对新入门vue的朋友有用,对vue比较了解了的朋友请绕过。

这篇解决vue多个路由共用一个页面的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
May 28 Javascript
javascript dom追加内容实现示例
Sep 21 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
Mar 07 Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 Javascript
JavaScript数组合并的多种方法
May 22 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
JavaScript链式调用原理与实现方法详解
May 16 Javascript
angular5 httpclient的示例实战
Mar 12 #Javascript
vue 简单自动补全的输入框的示例
Mar 12 #Javascript
webpack打包js的方法
Mar 12 #Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 #Javascript
vue路由懒加载的实现方法
Mar 12 #Javascript
vue移动UI框架滑动加载数据的方法
Mar 12 #Javascript
详解vuex的简单使用
Mar 12 #Javascript
You might like
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
耐克亚太地区:Nike APAC
2019/12/07 全球购物
傲盾软件面试题
2015/08/17 面试题
外语专业毕业生自荐信
2014/04/14 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
应聘英语教师求职信
2014/04/24 职场文书
岗位聘任协议书
2015/09/21 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python