私は答えが「this」の文脈に関係していると思います。 handleEnter()関数を渡してcreateTrackをレンダリングしようとすると、 'undefinedの小道具を読むことができません'というエラーが表示されます。しかし、私はそれをsong.play()のような 'this'のない通常の関数に渡すことができます。なぜこの関数を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