首页 > 解决方案 > setState 回调上的这个值。一个小小的困惑

问题描述

问题: setState(?) 的回调中 this 的值是什么?

考虑一下:

handleChange = (event) => {
    const { name, value } = event.target;
    const {content, errors} = this.state;
    this.setState({
      content: {
        ...content,
        [name]: value
      },

一个简单的状态更新......但之后我调用回调,并尝试访问我的 var内容错误,这些值是什么?

this.setState({
      content: {
        ...content,
        [name]: value
      },
      errors: {
        ...errors,
        [name]: validations[name] && validations[name](value)
      }
    }, () => {
      // commenting this line, I get the content out of date. 
      // const {content, errors} = this.state; 
      ! this.hasErrors() //if doesn't have errors. 
      ? this.props.fn({...content, students : [content.studentA, content.studentB]})
      : this.props.fn({...content, hasError: true, errors}) //should be emptyField(?) 
    })

内容或错误值有点旧,所以我需要“更新”它来老化 this.state 中的值。

  const {content, errors} = this.state; 

如果没有前一行,当我尝试访问内容或错误时,我会从前一个状态获取值。我需要重新声明内容和错误,以获得更新的状态。

有人可以解释一下发生了什么吗?

标签: reactjscallbacksetstate

解决方案


我认为您不需要再次传播旅行错误或内容,您可以解释一下,您实际上想要做什么?


推荐阅读