SetState不会使用回调更新?

问题描述 投票:-1回答:3

我很难理解为什么文本不会在浏览器中改变,或者为什么它甚至不会console.log新的状态。我只是想点击它来改变文本。

class Komponentti extends React.Component{
      constructor(props){
        super(props)
        this.state = {teksti: "Hello"}
        this.handleClick = this.handleClick.bind(this);
      }
      handleClick(){
        this.setState = ({teksti: "Mello"}), function(){
          console.log(this.state.teksti);
        }
      }  
      render(){
          return(
            <h1 onClick={this.handleClick}>{this.state.teksti}</h1>
          )
        }
    }
javascript reactjs callback es6-class
3个回答
3
投票

你说错了。应该:

handleClick() {
 this.setState({teksti: "Mello"}), () => {
    console.log(this.state.teksti);
  }
}

1
投票

可能是你已经与es6胖箭头功能混淆了。

在ES6中,我们可以使用胖箭头符号声明函数,将词法this传递给您声明的函数。

例如:

const example = () => {
    // Something interesting
}

但我们称这个函数为example()

但是setState()是一个已经在React中声明的异步函数。我们可以用它来以下列方式更新状态。

handleClick(){
 this.setState({teksti: "Mello"}), () => {
    console.log(this.state.teksti);
  }
} 

1
投票

以下是设置状态的方法:

  1. this.setState({VALUENAME: “值”});
  2. this.state.varluename =“value”; this.forceUpdate();
© www.soinside.com 2019 - 2024. All rights reserved.