不用target已经表示的是input这个元素对象
应该是consol.log(event.target[0].value )
因为是无条件渲染子组件的,你可以用PureComponent或者memo来处理一下
是个析构写法,相当于 comments = props.comments;
箭头函数,可以 这么写 () => <li>abc</li> 等同于 () => { return <li>abc</li> } 是一种简写的方式
所以老师代码中正确的写法应该是:
写法1
写法2
在index.js 绑定的是哪个,就是加载显示的那个组件
因为 this.setState 方法是异步的,可以参考这篇文章 https://segmentfault.com/a/1190000013040438?utm_source=tag-newest
重新安装react的依赖包
super单词写错了
onClick属性回调handleDelete时没有绑定this
你需要写constructor方法,在里面绑定this即可
或者,你可以考虑使用箭头函数,就可以不用手动绑定this
这里有一个很关键的地方需要注意。子组件纯函数是没有this 的,所以通过
this.props.XXX
是无法调用的。正确的方法应该是在子组件纯函数的头部引入父组件的:函数名、参数变量,如下:
const CommentList = ({comments,onDeleteThis}) => {}
这个时候,才能在子组件的纯函数内使用:
comments,onDeleteThis
注意this指向及删除按钮中回调的index参数传递
获得不了 this 就要想想 this 指向是否有问题,这个强调了多次 要注意。第二,就是你要删除一条评论,是否要把要删的是哪条评论传出去呢?要不在你的 App 中怎么知道要删除哪条?
箭头函数 可以 这么写 () => <li>abc</li> 等同于 () => { return <li>abc</li> } 是一种简写的方式
你写的很认真。点赞! 有几点可以改进,1 删除的回调函数也许不需要传入 e 这个event object,直接把 index 传入岂不是更好? 2 在 deleteComment 方法中,你选用了 splice 来删除,splice 是个 mutable 的方法,当然也没问题,也可以试试用 数组上面的 filter 方法,这个函数是 immtuable 的,而且更好理解。3 既然 clickHandler 里面只有一行,是不是可以试试直接用箭头函数作为回调? 例如 onClick={(e)=> { .... }}