我在由onClick激活的map函数中有一个绑定函数,但是我无法访问此函数,因为似乎使用this作为参数会停止setState的工作。在buttonPress函数中,最初的setState可以工作,但是现在我添加了bind(this,(key))来允许key参数通过,它会跳过setState,而我只能console.log()。
所有内容的目的是确定单击了哪个条目,然后将其作为道具传递给子类组件。
map()函数
<div ref={p => this.MyMenu = p} className="mainmenu">
<p className="title">Song List</p>
<div className="songList">
{song.map(song => (<div onClick={this.buttonPress.bind(this, song.key)} key={song.key} className="song-entry">
<h3 className="song-name">{song.name}</h3>
<p className="song-length">{song.length}</p>
<p className="song-desc">{song.desc}</p>
</div>))
}
</div>
</div>
这里是功能按钮按下
buttonPress (key) {
console.log(key);
let localkey = key
this.setState({songchoice: localkey});
console.log(this.state.songchoice);
clearInterval(this.countdownInterval);
this.setState({count:3, countdown:true, songchoice: key},
()=>{setInterval(this.countdownInterval, 3000); this.aboutTween = TweenMax.to(this.aboutSection, .8,{opacity:1, y: -100, ease: Power3.easeOut})});
}
还有一个GitHub链接,如果您想查看整个页面。
是否有特定的绑定原因,我不知道也许您可以尝试过,这是一种简单得多的方法,例如
onClick={ () => this.buttonPress(song.key)}