我认为答案与'this'的背景有关。尝试通过传递handleEnter()函数呈现createTrack时,出现'无法读取未定义的道具'的错误。然而,我可以传递一个没有'this'的常规函数,比如song.play();为什么我不能将此函数传递给React中的onMouseEnter?
有人可以提供更好的解释吗?
handleEnter(){
this.song.play();
// this.props.mouseEnter();
}
createTrack(track){
var song = new Audio([track.preview_url]);
return (
<div className="image" key={track.id}>
<img className="img-circle" src={track.album.images[0].url} onMouseEnter={this.handleEnter.bind(this)} onMouseLeave={()=>song.pause()}/>
<p className="showMe"><span>{track.name}</span></p>
<p className="showMeArtist"><span>{track.artists[0].name}</span></p>
</div>
);
}
getTracks(){
if(this.props.tracks){
console.log(this.props.tracks);
return <div>{this.props.tracks.map(this.createTrack)}</div>
}
}
render(){
return(
<div>{this.getTracks()}</div>
)
}
您可能想详细说明为什么会出现这种问题。 –
让我知道这是否有意义。 – qballer
这是es6的等价物吗?如果我使用箭头功能? {this.props.tracks.map(track => this.createTrack(track))} – driftdrift