React中map便利后列表添加的点击事件

#1
     {this.state.kaolist.map((item,i) => {					
	 return (
	     <span key={i} data-key={i}  className={this.state.isSelect === i ? 'activeted' : ''}  onClick={this.setCur}>{item.title}{item.id}</span> 
		 )})} 	

setCur(e){
		
        this.setState({
            isSelect:Number(e.currentTarget.getAttribute('data-key'))
        });
    }

这样是可以点击的时候给列表添加上样式的,但是我需要传递参数怎么办 onClick={this.setCur(item.id)} 这样写就出错,this绑定的问题,当用

let self = this;  onClick={self.setCur.bind(self, item.id )} 
setCur(e){
		console.log(e) //此时是可以获取到传递的参数,但是不能拿到data-key
  };

有啥方法让我既能拿到data-key 又可以获取到传递的参数,

#2

为什么不直接传 data-key…另外 onClick={e => this.setCur(e)} 试一下

#3

你setCur方法的第二个参数打印下就知道了,可以了解下bind方法的实现原理

1 Like
#4

onClick={()=>this.setCur(item.id)}