[vue]——vue.set()

本文探讨了Vue.js中更新数组元素时遇到的问题及解决办法。当试图在没有初始值的情况下更新数组中的元素时,Vue可能不会正确地跟踪变化并重新渲染视图。文章提供了使用Vue.set方法来确保变化被侦测到的具体示例。
摘要由CSDN通过智能技术生成

当data对象中的某个值需要更新,但更新之前是没有值的状态,如果此时只是简单的修改内部的值,就会发现页面上并不会渲染更改后的值。

原因

原因就是添加新的值之后并不会将添加的值双向绑定,此时虽然更新了,但是页面并不会渲染。

解决

Vue.set()

<div id="app">
	<ul>
		<li v-for="(item, index) in tempList" :key="index">{{item}}</li>
	</ul>
	<button @click="addList">change</button>
</ div>

<script>
new Vue({
    el:"#app",
    data:{
        tempList: [
        {id: 1, name: '1'},
        {id: 2, name: '2'}
      ]
    },
    methods:{
        addList () {
            Vue.set(this.tempList, 0, {id: 3, name: '3'})
        }
    }
});
</script>

如果是在组件中使用,就不能直接使用Vue实例来调用,但是可以使用this

export default {
    data:{
        tempList: [
        {id: 1, name: '1'},
        {id: 2, name: '2'}
      ]
    },
    methods:{
        addList () {
            this.$set(this.tempList, 0, {id: 3, name: '3'})
        }
    }
};
</script>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值