为了账号安全,请及时绑定邮箱和手机立即绑定

Vue防坑指南

对象属性添加与删除


let vm = new Vue({
    data() {
		return {
		    a
		}
	}
})

vm.b = "xxxx" //非响应

vm.a = "xxx" //响应

vm.$set('b',"xxxx")//响应

Vue 不能检测以上属性添加或删除的变化,必须使用 Vue.set 或者 vm.$set 设置属性

数组更新检测

Vue 无法检测到以下更新:

  • 单独设置数据中某一项元素

  • 变更数据长度

替代的解决方案是使用 vm.$set 方法,删除数据某一项使用 splice 方法


let vm = new Vue({
    data() {
		return {
		    items:[]
		}
	}
})

vm.$set(vm.items,index,item)

vm.items.splice(newLength)

vm.items.splice(itemIndex,1)

vm.items.push(item)

...

变量命名

以"_","$"为开头命名的变量不会被 Vue 代理


let vm = new Vue({

template:`
     <div>
        <span>{{_a}}</span>
	    <span>{{$b}}</span>
	</div>
`,
    data() {
	    _a:1,
		$b:2
	}
})

vm._a = 3 //不会响应

vm.$b = 4 //不会响应

事件绑定

在自定义 Vue 组件上绑定原生事件需要加 .native 修饰符


<my-component @click.native="handleClick"></my-component>

定时器

组件内部创建的定时器要及时销毁,防止内存溢出


let vm = new Vue({
	mounted() {
		this.timer = setInterval(()=>{},10000)  
	},
	beforeDestory() {
	  clearInterval(this.timer)
	}
})

dom操作

需要在dom操作之后执行的操作要放到$nexTick中执行


let vm = new Vue({
    mounted() {
		this.$nextTick(()=>{
	       ///.......
		})
	}
})

最后,附上我的个人博客地址,欢迎交流。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
35
获赞与收藏
64

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消