为什么即使编写了setState方法也无法更新我的状态?

时间:2020-07-30 19:09:31

标签: javascript reactjs

从'react'导入React,{组件}

类列扩展了组件{ 构造函数(道具){ 超级(道具)

    this.state={
        message:'Hello'
    }
}

changeMessage(){
    
     this.setState=({
         message:'Welcome'
    })
}

render(){
    return(
        <div>
            <div>{this.state.message}</div>
            <button onClick={this.changeMessage}>Click</button>
        </div>
    )
}

} 导出默认列

2 个答案:

答案 0 :(得分:5)

正如ray hatfield所说,您正在丢失this上下文,需要使用箭头功能,但是您没有调用setState;您要覆盖它。

从{p>中删除=

this.setState=({
     message:'Welcome'
})

说:

this.setState({
    message:'Welcome'
})

答案 1 :(得分:3)

因为将其传递为this.changeMessage会将其与组件范围分离。当按钮调用它时,“ this”不再是组件。

将其更改为箭头功能:() => this.changeMessage()

如果您需要详细信息,我过去曾尝试在another answer中解释此范围问题。

另外,像Aaron points out一样,您的changeMes​​sage处理程序中还有一个多余的=