先介绍下我遇到的情况。我在父组件的data中有一个对象list,list里面会存在4个数组,这四个数组数据是通过接口请求过来的。当时我用了这样的方式给list增加数组
Object.keys(fourList).forEach(i=>{
this.list[i] = fourList[i]
})
然后我在父组件遍历数组:
<div
v-for="(i,index) in list[数组名]"
:key="index"
>
<child
v-model="i.xxx.value"
/>
</div>
子组件child里的input展示了这个值,在我测试功能的过程中,发现数据不是响应式的:
在vueDevtools里手动改变数组里的值,input里的数值并没有及时更新,而是需要我切换页面后才会更新。
经历了很长一段时间的排查后,我终于发现了原因,然后查了下vue官网关于响应式的原理介绍,就看到了图1里的文字。
vm.a 是响应式 vm.b = c 不是响应式