vue使用技巧及vue项目中遇到的问题


Posted in Javascript onJune 04, 2018

这里给大家分享一下vue中的一些技巧,希望对大家有用处。(话不多说上代码)

1,vue路由拦截浏览器后退实现表单保存类似需求(为了防止用户突然离开,没有保存已输入的信息。)

//在路由组件中:
mounted(){
},
beforeRouteLeave (to, from, next) {
 if(用户已经输入信息){
 //出现弹窗提醒保存表单,或者自动后台为其保存
 
 }else{
 next(true);//用户离开
 }

请参考vue文档全局钩子和组件钩子

2,路由懒加载写法:

// 我所采用的方法,个人感觉比较简洁一些,少了一步引入赋值。
 const router = new VueRouter({
  routes: [
  path: '/app',
  component: () => import('./app'), // 引入组件
  ]
 })
 // Vue路由文档的写法:
 const app = () => import('./app.vue') // 引入组件
 const router = new VueRouter({
  routes: [
  { path: '/app', component: app }
  ]
 })

3,路由的项目启动页和404页面

一般项目都会设置这个,如果默认进入地址会跳到login页面,如果你输入的是一个没有用的路由或者是空路由会跳转到notFind页面(你自己设置的404页面)

export default new Router({
  routes: [
  {
   path: '/', // 项目启动页
   redirect:'/login' // 重定向到下方声明的路由 
  },
  {
   path: '*', // 404 页面 
   component: () => import('./notFind') // 或者使用component也可以的
  },
  ]
 })

4,setInterval路由跳转继续运行并没有销毁问题

beforeDestroy(){
  //我通常是把setInterval()定时器赋值给this实例,然后就可以像下面这么暂停。
 clearInterval(this.intervalid);
},

beforeDestroy方法是生命周期里组件销毁前执行的钩子函数,在离开的时候会触发这个方法,这个方法在其他的地方也会有妙用,希望大家可以去了解一下。

5,setTimeout/setInterval this指向改变,无法用this访问VUe实例

这个地方大家的默认方法肯定是:

//使用变量访问this实例
 let self=this;
  setTimeout(function () { 
   console.log(self);//使用self变量访问this实例
  },1000);

其实这个地方我们可以用箭头函数,因为箭头函数会改变this的指向,而指向的刚好是自己的父级this,所以我们可以这样用:

//箭头函数访问this实例 因为箭头函数本身没有绑定this
  setTimeout(() => { 
  console.log(this);
 }, 500);

这样我们的this就是指向我们的vue实例了。

6,Vue 数组/对象更新 视图不更新

方法一:直接使用最简单也是最有效的方法,深拷贝对象或者数组,视图会进行更新,不过会有一个缺点,深拷贝后的数组或者对象不是原来的那个数组或者对象,是你现在改变了之后的值。

上代码:

你的对象或者数组=JSON.parse(JSON.stringify(你的对象或者数组))
先进行转字符串,再转回对象,这个就进行了一个拷贝的过程,会触发视图的改变,同时也进行了一个数组的替换,有利有弊。

方法二:this.$set(你要改变的数组/对象,你要改变的位置/key,你要改成什么value)

this.$set(this.arr, 0, "OBKoro1"); // 改变数组
this.$set(this.obj, "c", "OBKoro1"); // 改变对象

这个是vue专门为改变不了数组设定的一个方法,使用也很简单(如果还是不懂请参考vue文档)

7,深度watch与watch立即触发回调

watch很多人都在用,但是这watch中的这两个选项deep、immediate,或许不是很多人都知道,我猜。

选项:deep

在选项参数中指定 deep: true,可以监听对象中属性的变化。

选项:immediate

在选项参数中指定 immediate: true, 将立即以表达式的当前值触发回调,也就是默认触发一次。

watch: {
  obj: {
   handler(val, oldVal) {
   console.log('属性发生变化触发这个回调',val, oldVal);
   },
   deep: true // 监听这个对象中的每一个属性变化
  },
  step: { // 属性
   //watch
   handler(val, oldVal) {
   console.log("默认触发一次", val, oldVal);
   },
   immediate: true // 默认触发一次
  },
  },

总结

以上所述是小编给大家介绍的vue使用技巧及vue项目中遇到的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript动态创建link标签到head里的方法
Dec 22 Javascript
如何编写高质量JS代码(续)
Feb 25 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 Javascript
详解js界面跳转与值传递
Nov 22 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
Vue中使用matomo进行访问流量统计的实现
Nov 05 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 #jQuery
jQuery实现常见的隐藏与展示列表效果示例
Jun 04 #jQuery
js如何找出字符串中的最长回文串
Jun 04 #Javascript
详解Webpack + ES6 最新环境搭建与配置
Jun 04 #Javascript
jQuery实现的简单获取索引功能示例
Jun 04 #jQuery
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 #Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 #Javascript
You might like
php不用正则采集速度探究总结
2008/03/24 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
php压缩文件夹最新版
2018/07/18 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
javascript自定义的addClass()方法
2014/05/28 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
js实现圆盘记速表
2015/08/03 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
java直接调用python脚本的例子
2014/02/16 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
python实现按行分割文件
2019/07/22 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
保护动物倡议书
2014/04/15 职场文书
留学推荐信范文
2014/05/10 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
锅炉工岗位职责
2015/02/13 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
讨论nginx location 顺序问题
2022/05/30 Servers