没什么问题啊
抱歉 上面的格式错误 重新传一下代码片段
<ul>{ this.state.list.map((item, index) => { return <li key={index} onClick={this.handleItemClick(index)}>{item}</li> }) } </ul>
跟着敲得
箭头函数体内的this指向的是定义时所在的对象,而不是执行时所在的对象。
关键在this的使用,而不是传参不传参
今天重新打开项目再运行就没有问题了,又是个玄学问题看来
onClick={this.handleItemClick(index)} 改成 onClick={() => this.handleItemClick(index)}
哈哈 这坑我刚踩过 splice方法返回的是被删除的项目
数组是引用赋值,const list = this.state.list;在改变list的时候this.state.list一样会改变
把input里面的type那句话删除
前者,只是新的引用;后者,是创建一个新数组
splice方法的返回值是被删除的那项,之后调用setState相当于把删除的那项赋值给中的list,因此只留下删除的那项。
视频中指出,copy环节避免直接操作state,通过局部变量复制,操作局部变量,达到更新数据的目的。可以使程序性能、可调试性更优等。
Array.proptype.splice(下标, 个数)
这里感觉是简单的赋值操作,用展开运算符意义不大,为了秀es6而使用?
箭头函数里面没有自己的this,指向的是外层的this;在一个对象的方法里面,本身this指向的是对象,如果用箭头函数,this指向的就不是当前对象,指向的也就是window,所以产生很多问题
如果从正确性上来说,用push是不对的,state状态强调的是immutable,所以建议一定要拷贝一个副本来操作。这是偏底层的东西了