一、vue监听数组的变化:
1、vue能够监听数组变化的场景
【1】通过赋值的形式改变正在被监听的数组;
【2】通过splice(index,num,val)的形式改变正在被监听的数组;
【3】通过数组的push的形式改变正在被监听的数组;
2、vue无法监听的数组变化的场景
【1】通过数组索引改变数组元素的值;
【2】改变数组的长度;
3、VUE解决无法监听数组变化的方法
【1】数组:改变数组的值:this.$set()
【2】改变数组长度:arr.splice()
【3】对象:改变原有属性:Object.assign()
【4】增加新属性:this.$set()
二、vue监听对象的变化
1、vue能够监听到对象变化的场景
【1】通过直接赋值的场景。eg:watchObj = {name:"zyk"}
2、vue无法监听到对象变化的场景
【1】对象的增加、删除、修改无法被vue监听到
3、VUE解决无法监听对象变化的方法
【1】使用 this.$set(object, key, value)(vue 无法监听 this.set 修改原有属性)
【2】使用Object.assign(),直接赋值的原理;(推荐使用)
转载于:https://blog.csdn.net/qq_15509267/article/details/88086810
三、说说你对选项el,template,render的理解
- el: 把当前实例挂载在元素上
- template: 实例模版, 可以是
.vue
中的template, 也可以是template选项, 最终会编译成render函数 - render: 不需要通过编译的可执行函数
- template和render, 开发时各有优缺点, 不过在线上尽量不要有template
四、 说说你使用vue过程中遇到的问题(坑)有哪些,你是怎么解决的
填写表单有些需要v-if来判断显示某种输入框时会有dom缓存,需要加唯一的key来标识
五、 组件和插件有什么区别
【1】组件 (Component) 是用来构成你的 App 的业务模块,它的目标是 App.vue。
【2】插件 (Plugin) 是用来增强你的技术栈的功能模块,它的目标是 Vue 本身。
六、 动态给vue的data添加一个新的属性时会发生什么?怎样解决?
直接添加属性会因为新的属性没有监听导致页面不能响应该数据的变化。
通过vue.$set(object, key, value)方法来动态添加响应式属性
对象类型写法
this.$set("要给哪个对象添加","添加的对象的key",'添加的对象的value')
数组类型写法
this.$set('你要修改的数据','你要修改这个数组的索引值',要修改的值val)