1.为什么vue的data必须是函数
因为vue的组件是会复用的,如果你的data是对象的话,你在其中一个组件修改了data的值,另外一个组件获取到的data是修改后的值,并不是初始值。这样就不能保证组件的data数据的唯一性。
而如果你的data是函数的话,data函数执行后返回的是初始值,并不会受到影响。
2.computed和watch的区别
computed:
- computed是同步计算的,不支持异步
- computed相当于计算的是一个派生数据,必须返回计算结果
- computed有缓存,只有当依赖的数据变化时才会重新计算,否则会从缓存中读取之前的计算结果
watch:
- watch是支持异步操作的
- watch无需返回值,他侧重的是变化后执行的操作
- watch有两个配置选项分别是immediate和deep立即开始无需监视的内容发生变化和深度监视,数组这种复杂类型内部属性值的变化是监视不到的,要使用deep配置项才能监视到,他们默认是关闭的,用的时候需要打开
- watch没有缓存,每次变化都执行回调函数。