- 多个组件数据不相互干涉
假如在一个地方引用了同一个组件,并给他们都绑定了单独的值。如果只声明为一个对象或数组,可能会导致在某一个实例中修改数据,影响到其他实例中的数据,因为数组和对象是引用类型的数据。为了在多次引用组件时,让他们的数据不相互干涉,在vue2中定义data也是定义成一个函数的形式 - 确保每次渲染时都会返回最新的默认值
静态默认值在组件创建时就会被计算并应用,如果以后需要更新默认值,就无法达到目的。通过将默认值定义为函数,可以在需要时动态地生成默认值。
比如这三个表单项是用v-for循环遍历生成的表单项,并绑定到了不同的值上。设置默认值是空对象,但是没以函数形式返回,所以在改变其中一个值时其他地方都会被影响。
const fieldObj = defineModel('fieldObj', {
local: true,
default: {},
});
将默认值改为函数形式就可以单独绑定值了。