求解,VUE下,为什么app.items[0]['name'] = 'X-man'设置值后是响应式的?

var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的

官网不是说vm.items[1] = 'x'不是响应式的
自己测试的如下:

<script>
var app = new Vue({
        el: '#app',
        data: {
            english: ['a', 'b', 'c'],
            items: [{
                name: '张三',
                age:18,
            },{
                name: '李四',
                age:18,
            },{
                name: '王五',
                age:18,
            }]
        },
        methods: {
            dianji:function(){
                console.log("点击啦")
                //app.english[0]='X-man'
                app.items[0]['name'] = 'X-man'
            }
        },
        created: function () {
        console.log('开始啦')
        }
    })
</script>

app.items0 = 'X-man'
怎么是响应式的,求解???

阅读 1.7k
2 个回答

app.items[0]['name'] = 'X-man' 你这是修改一个对像的属性, 人家说的是数组项.

最好搞清楚原理你就不会迷糊了.

app.items0 = 'X-man'
这种属于修改数组对象的值,其本质和 let a = {id:1}, a.id = 2,没有区别;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题