Vue中动态添加属性的方法,添加的属性视图中不更新(初学者容易踩坑)

本文介绍了在Vue中动态添加属性时遇到的视图未更新的问题。当尝试通过对象直接添加属性,如`person.hobby`,虽然数据已改变,但视图并未响应。原因是Vue在初始化时仅监听声明过的data或computed属性。为解决此问题,文章推荐使用Vue的`set()`方法来确保属性被正确地响应式处理。同时,作者分享了在实际开发中的注意事项,并欢迎大家留言交流更多解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多时候在代码中通过添加已有对象的属性的时候,视图却无法更新,就像这样通过在add()方法中添加了一个hobby的属性

<div id="app">
			<button @click="add">添加属性</button>
			<br />
			<hr />
			<div class="init">
				{
  {person.name}} --{
  {person.age}}--{
  {person.hobby}}
			</div>
		</div>
		<script src="vue.js"></script>
		<script>
			const vm = new Vue({
				el: "#app",
				data: {
					person: {
						name: "rose",
						age: 18,
					},
				},
				methods: {
					add() {
						this.person.hobby = "dance";
					},
				},
			});
		</script>

结果页面无法展示,数据却存在,这个时候不知道问题出在哪里了。

其实对于vue来说,在初始化的时候,就会去捕获data或者computed中声明的数据,比如person中的age与name的(展示也不太一样)&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值