代码之家  ›  专栏  ›  技术社区  ›  cbutler

在对象数组的react setState中使用spread操作符

  •  3
  • cbutler  · 技术社区  · 8 年前

    我有一个对象数组(语言代码和名称),我正试图将其扩展到react组件中本地状态的另一个数组中。我试图传播的阵列结构如下所示:

    let langs = [
      {code: "af", name: "Afrikaans"},
      {code: "sq", name: "Albanian"}
    ]
    

    我正在尝试这样的事情:

    this.setState({
      languages: [...langs]
    }, 
      console.log(this.state.languages);
    );
    

    当我试着安慰的时候。setState回调中的日志语言数组为空。我做错了什么?

    2 回复  |  直到 8 年前
        1
  •  3
  •   Stan Luo    8 年前

    setState 是异步的,您需要在回调中调用该函数。

    this.setState({
      languages: [...langs]
    }, () => console.log(this.state.languages)
    );
    
        2
  •  2
  •   Jamiec    8 年前

    第二个参数是回调-您正在执行 console.log 立即并将其结果作为回调传递。将代码更改为:

    this.setState({
        languages: [...langs]
      }, 
      () => console.log(this.state.languages);
    );