SetState在将其用作参数绑定(ReactJS)时不起作用

问题描述 投票:0回答:1

我在由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链接,如果您想查看整个页面。

javascript reactjs parameters binding setstate
1个回答
0
投票

是否有特定的绑定原因,我不知道也许您可以尝试过,这是一种简单得多的方法,例如

onClick={ () => this.buttonPress(song.key)}

© www.soinside.com 2019 - 2024. All rights reserved.