Vue不响应的情况

560 阅读1分钟

vue不响应情况

​ 1.数组的length不响应,举个栗子:

<body>
    <div id="app">
    	<ul>
    		<li v-for="item in todos" :key="item.id">
   				 {{item.task}}
   			 </li>
   		</ul>
   		 <button @click="clearTodos">清空事项列表</button>
    </div>
</body>

此处结果是视图界面没有发生变化,因为数组 的length属性不响应,在浏览器中查看vue的root时,会发现,root中的数据发生变化,但页面显示依旧不变。

​ 2.简易数组下标不响应,举个栗子:

<body>
	<div id="app">
		<ul>
			<li v-for="item in arr">
				{{item}}
   			 </li>
   		</ul>
   		<button @click="clearTodos">修改简易数组第一个</button>
    </div>
</body>

这样的话,和上面那个栗子的结果是一样的,root数据更改,但是页面的内容不更改。解决办法就是把methods中的changeTask方法中的修改数据方法换成用set做:

​ Vue.set(this.arr,'0','修改内容')

或者 (Vue.set===this.$set)

​ this.$set(this.arr, '0', '修改内容')

3.虽然简易数组不响应,但是复杂数组用下标还是会响应的,再举个栗子:

<body>
	<div id="app">
		<ul>
			<li v-for="item in arr" :key="item.id">
					{{item}}
			 </li>
   		</ul>
   		 	<button @click="clearTodos">
   		 	    修改简易数组第一个
   		 	</button>
    </div>
</body>

此时,利用下标处理数据是会做响应的。