皮皮卡丘3696974
你就把TodoItem理解为一个新的HTML标签,而delete就是这个标签的某一个属性值,由于TodoItem这个标签是你自己自定义封装的,所以这个标签的属性就是由你决定的,所以这个delete可以是你自己定义的任何名字,名字不是关键,关键的是这个名字的值,因为在TodoItem组件里起到最终作用的是delete这个属性名最终指向的实际的函数。你在父组件里向TodoItem传递的是函数a,那在TodoItem里最终执行的就是函数a,在父组件里向TodoItem传递的是函数b,那在TodoItem里最终执行的就是函数b
Raymond_0010
react 16.3.1
七灵
在vue当中子组件给父组件传值是通过分发事件完成的
画画认真学习呀
为了拷贝一个副本出来,避免直接操作list
画画认真学习呀
你看下你的子组件是用的傀儡组件(函数定义的),还是类组件,傀儡组件直接使用props.key,因为傀儡组件的this===undefined
慕妹8863540
小哥,你这是没理解state状态与props属性的定义呀,props属性是不能修改的,只读,子组件要改变父组件的状态数据,需要通过父组件传递一个属性方法给子组件<TodoItem handleDelete={this.handleDate()} />
this.handleDate()这个方法是在父组件定义的,然后子组件通过方法调用 this.props.handleDelete()
建议:<div onClick={() => this.props.handleDelete }>{this.props.content}</div>
小章鱼丸
可以看官网文档里面事件处理一节,讲得很清楚。
https://react.docschina.org/docs/handling-events.html
慕移动3506833
可以让代码结构清晰,也可以提升组件的利用性。……
weixin_慕工程7087209
可以把onClick当作属性传过去之后直接使用
<todoItem onClick={this.handleDelete.bind(this, index)} />然后todoItem这边可以直接这样写
<div onClick={this.props.onClick}>todo item</div>
慕神8423096
从父组件传递过来的。父组件:TodoList.js
<TodoItem delete={this.handleDelete}
content={item}
key={index}
index={index}
/>
clock88731
weixin_慕后端4375838
听声音像是青轴的
慕移动2848847
父组件引入子组件的时候已经绑定了key属性了,子组件只是内容展示,又没使用map遍历数据列表,因此不用再子组件里再绑定key
qq_无根草_0
删除的下标不对了