组件中写 name 选项有什么作用?
- 项目使用 keep-alive 时,可搭配组件 name 进行缓存过滤
- DOM 做递归组件时需要调用自身 name
- Vue-devtools 调试工具里显示的组见名称是由 Vue 中组件 name 决定的
Vue 组件 data 为什么必须是函数
- 每个组件都是 Vue 的实例
- 组件共享 data 属性,当 data 的值是同一个引用类型的值时,改变其中一个会影响其他
- 组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的 data,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。
Vue 组件里的定时器要怎么销毁?
如果页面上有很多定时器,可以在 data 选项中创建一个对象 timer,给每个定时器取个名字一一映射在对象 timer 中, 在 beforeDestroy 构造函数中
for(let k in this.timer){clearInterval(k)};
如果页面只有单个定时器,可以这么做。
const timer = setInterval(() =>{}, 500);
this.$once(‘hook:beforeDestroy’, () => {
clearInterval(timer);
})
Vue 该如何实现组件缓存?
在面向组件化开发中,我们会把整个项目拆分为很多业务组件,然后按照合理的方式组织起来,那么自然会存在组件之前切换的问题,Vue 中有个动态组件的概念,它能够帮助开发者更好的实现组件之间的切换,但是在面对需求频繁的变化,去要切换组件时,动态组件在切换的过程中,组件的实例都是重新创建的,而我们需要保留组件的状态,为了解决这个问题,需要使用到 Vue 中内置组件
包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染,
简答的说: 比如有一个列表和一个详情,那么用户就会经常执行打开详情=>返回列表=>打开详情…这样的话列表和详情都是一个频率很高的页面,那么就可以对列表组件使用进行缓存,这样用户每次返回列表的时候,都能从缓存中快速渲染,而不是重新渲染