vue中列表渲染中的key的作用

VDOM(虚拟DOM)是惰性的, 它有一个原则, 这个原则叫做’就地复用’ , 它认为我的第一个就是红色的, 删除了第二个之后, 第二个就变成了第一个, 它印象中第一个是红的, 所以就我们认为的第二个变成红的了
解决: 使用key属性
使用:

<li v-for = " (item,index) in list " :key = "item.id">

注意:

  1. 优先使用数据中能够识别的, 比如 : id
  2. 最差在用 index
    例如:
Html:
      <div id="app">
	       <ul>
		       <li v-for = " (item,index) in list " :key = "item.id">
		       <p> {{item.name}} </p>
		       <button @click = "remove(index)"> 删除 </button>
		       <button @click = "changeStyle"> 修改样式 </button>
		       </li>
	       </ul>
       </div>
   
   Js:
	   new Vue({
		   el: '#app',
		   data: {
			   list: [
				   {
					   id: 1,
					   name: 'zhangjun'
				   },
				   {
					   id: 2,
					   name: 'yanyabing'
				   }
			   ]
		   },
		   methods: {
			   remove(index){
			   this.list.splice(index,1)
		   },
			   changeStyle(e){
			  	 e.target.parentNode.style.background = 'red' //我是为了给你举例, 这种写法不规范
			   }
		   }
	   })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值