繁体   English   中英

SetState不会使用回调更新吗?

[英]SetState won't update with callback?

我很难理解为什么文本不会在浏览器中更改或为什么甚至不会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>
          )
        }
    }

你说错了。 应该:

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

可能是您对es6粗箭头功能感到困惑。

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

例如:

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

但是我们将该函数称为example()

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

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

以下是设置状态的方法:

  1. this.setState({valuename:“ value”});;
  2. this.state.varluename =“值”; this.forceUpdate();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM