单击某些按钮后(reactJS),“ this”变得不确定

时间:2018-07-08 08:17:54

标签: javascript reactjs

因此,一旦单击单选按钮,我将尝试保存选定的选项。直到我按下以下代码中的按钮之一

 {Object.keys(this.state.activeContent).map((key, index) =>              
        <input type="radio" name="key" value={key}
         checked={this.checkOption(this.state.activeContent[key].id)}
         onChange={() => this.saveKey_Index(this.state.activeContent[key].id, index)} />
  )}
        <button onClick={() => this.saveActive(this.state.activeContent)}>Save Active</button>
        <button onClick={() => this.runHTML("<html> <title> test </title> </html>")}>Play</button>

“播放”按钮没有任何错误,然后我可以从活动列表中单击所需的元素。但是,当我单击“保存活动”时,我无法单击列表中的任何项目,但出现以下错误: https://ibb.co/hpJp48

这两个功能: 播放:

runHTML(htmls) {
    console.log(htmls)
    this.setState({moved: true})
    var template = { htmlContent: this.state.htmlContent };
    return (<div dangerouslySetInnerHTML={template} />)
}

保存活动:

saveActive(list) {
    this.setState = ({ moved: true })
}

我得到的错误来自: saveKey_Index:

saveKey_Index(key, index) {
    this.setState({ savedKey: key })
    this.setState({ savedIndex: index })
}

是的,我已经将saveActive和saveKey_Index绑定了(错误显然来自saveKey_Index)    this.saveKey_Index = this.saveKey_Index.bind(this) this.saveActive = this.saveActive.bind(this)

为什么在saveActive按钮之后而不是播放后出现错误?即使未绑定,我也可以在播放按钮中设置setState。为什么会这样?

1 个答案:

答案 0 :(得分:1)

您正在使用以下代码覆盖组件的setState()函数:

saveActive(list) {
    this.setState = ({ moved: true })
}

这里不应该有=

saveActive(list) {
    this.setState({ moved: true })
}