vue3 迁移 - data

data 组件选项声明不再接收纯 JavaScript object,而需要 function 声明

就是 vue2 的 data 可以是 object 或 function, vue3 的 data 只可以是 function

// vue2
data: {
    
    
	s: 2
},
// 这种写法作废

在 data 改变了的还有 Mixin 行为

举例

var c1 = {
    
    
	data: function() {
    
    
		return {
    
    
			u: {
    
    
				c1: "c1-1",
				c2: "c1-2",
				c3: "c1-3",
			},
			c1: "c1-1",
			c2: "c1-2",
			c3: "c1-3",
		}
	},
};

var c3 = {
    
    
	mixins: [c1],
	data: function() {
    
    
		return {
    
    
			u: {
    
    
				c1: "c3-1",
			},
			c1: "c3-1",
		}
	},
	created() {
    
    
		console.log(this.$data)
	},
};

vue2 mixins 是无论浅层属性还是深层属性, 都是"c3 覆盖 c1 的结果, 作为 c3 的 mixins 结果"
结果如下

{
    
    
	"u": {
    
    
		"c1": "c3-1",
		"c2": "c1-2",
		"c3": "c1-3"
	},
	"c1": "c3-1",
	"c2": "c1-2",
	"c3": "c1-3"
}

vue3 mixins 仅有浅层属性, 才有"c3 覆盖 c1 的结果, 作为 c3 的 mixins 结果"
同名的浅层属性被替换掉, 深层属性自然就不再被考虑了
结果如下

{
    
    
	"u": {
    
    
		"c1": "c3-1"
	},
	"c1": "c3-1",
	"c2": "c1-2",
	"c3": "c1-3"
}

这里可以对比浅拷贝深拷贝来思考

参考材料:Vue.js

end

猜你喜欢

转载自blog.csdn.net/u013970232/article/details/115183476