v-bind:key=‘index’报错

来源:2-8 简单的组件间传值

溯白

2019-11-09

<body>
		<div id="app">
			<input type="text" name="" id="" value="" v-model="inputvalue"/>
			<button type="button" v-on:click="handlebtn">提交</button>
			<ul>
				
				<todo-item v-for="(item,index) of list" 
				v-bind:key="index" 
				v-bind:content="item" 
				v-on:delete="handleItemDel">
				</todo-item>
				
			</ul>
		</div>
		
		
		
		
		<script type="text/javascript">
			// Vue.component("TodoItem",{
			// 	props:['content'],
			// 	template:"<li>{{content}}</li>"
			// })
			var TodoItem = {
				props:['content','key'],
				template:"<li @click='handleItembtn'>{{content}}</li>",
				methods:{
					handleItembtn: function(key){
						this.$emit("delete",this.key)
					}
				}
			}
			
			var app =new Vue({
				el:"#app",
				components:{
					TodoItem: TodoItem,
				},
				data:{
					list:[],
					inputvalue:'',
				},
				methods:{
					handlebtn:function(){
						// this.$data.list.push(this.$data.inputvalue);
						this.list.push(this.inputvalue);
						
						this.$data.inputvalue = '';
					},
					handleItemDel:function(key){
						this.list.splice(key,1)
					}
				},
				
			})
		</script>
	</body>

我把视频里面的index换成了key,最后功能可以实现,但是浏览器报错,

vue.js:634 [Vue warn]: "key" is a reserved attribute and cannot be used as component prop.

求老师解答

写回答

1回答

呀呀呀亚歌

2019-11-09

因为在循环里面,本身就需要绑定一个key,但是你传参的时候,有个参数也是key,这两个重名报错

0
3
溯白
回复
呀呀呀亚歌
我懂了,因为key是vue规定的名字,不能随便用,谢谢你
2019-11-14
共3条回复

Vue2.5-2.6-3.0开发去哪儿网App 零基础入门到实战

课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握

10675 学习 · 8191 问题

查看课程