首页 > 解决方案 > 单击某些按钮后,“this”变得未定义(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 按钮后而不是在播放后出现错误?我可以在播放按钮中设置状态,即使它也没有绑定。这是为什么?

标签: javascriptreactjs

解决方案


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

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

那里不应该=有,只是

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

推荐阅读