vue每日一问(3)

86 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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