持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
一。v-if和v-for的优先级是什么?
v-for的优先级比v-if高,这就会导致条件不成立,也要先循环列表。
所以,推荐将v-if套在v-for的外面使用。
可以在内置的template组件中使用v-if,这样的话,不会渲染处额外的DOM元素。
二。为什么data属性是一个函数而不是一个对象?
vue实例的时候定义data属性既可以是一个对象,也可以是一个函数。
组件中定义data属性,只能是一个函数,这样做是为了防止多个组件实例对象之间共用一个data,产生数据污染。
采用函数的形式,每个组件在初始化的时候,都是返回一个全新的对象,彼此是独立的。
三。动态给vue的data添加一个新的属性时会发生什么?怎样解决?
直接给data添加属性或删除属性,都不会触发响应式。
操作数组必须要使用数组提供的:push,unshift,pop,shift,reverse,splice,sort 这七方法才能保持响应式。
直接根据数组的下标操作数组,也是不会触发响应式的。
如果要动态的给data添加属性,并且要继续保持响应式,应该使用$set方法
如果要手动删除data的属性,并且要继续保持响应式,应该使用$delete方法
也可以通过$forcecUpdated()方法,更新整个组件,重新触发响应式。
四。Vue中组件和插件有什么区别?
组件:对页面结构功能的封装(标签,样式,交互)
组件的优势:降低整个系统的耦合度,调试方便,提高可维护性
插件:是对Vue的扩展,可以在插件中对Vue的原型对象进行扩展,可以全局混入,可以添加全局过滤器、全局组件、全局指令等等
方式:定义一个对象,对象中定义一个install方法,该方法的第一个参数必须是Vue