另一页

Vue组件的data属性为什么推荐用函数

第一层 官网推荐

因为官方文档上就是这么写的。

第二层 多组件共享引用

其实针对这个常见的问题,有很多人知道,如果同一份组件多次渲染,而JS传对象又只传引用,就会导致多组件使用同一份状态。

第三层 原因

上面的说法是对的。但是理论上使用导出的vue实例创建组件不会导致共享引用。一个文件直接export default一份对象字面量,看起来其他文件不会共享。但这只是看起来,实际上被编译成es5语法后,export default导出的对象直接变成普通对象,而非字面量。在es6环境,export deault对象字面量可能仍然是引用。