class albumList extends PureComponent {
constructor(props) {
super(props)
this.play = this.play.bind(this)
}
play(song) {
console.log(song)
}
render() {
return(
<div className="album-list">
{
this.props.data.map((item,index)=>{
return (
<div className="album-list-item" key={index}>
<img onClick={this.play } alt="" src="./img/album-list-play.png" />
</div>
)
})
}
</div>
);
}
}
上面的代码中,事件 play 在构造函数中使用bind的方式绑定,但是发现好像穿不了参数,在构造函数中绑定事件这样的方式是react中比较推荐的优化方案,而又想传参的话,该怎么写呢?
react绑定事件的方式:
- 在元素中直接bind绑定方法,但是每次render的时候都会触发到函数
- 在元素中使用箭头函数,这样子可以传参,但是会发现这样子只不过是把相同的函数放到不同的内存里面
嗨,如果不希望用匿名函数的话,可以将 img 抽象一层组件,供参考: