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 结果"
结果如下

// vue2
{
	"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 结果"
同名的浅层属性被替换掉, 深层属性自然就不再被考虑了
结果如下

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

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

参考材料:Vue.js

end

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值