将新元素插入空JSON对象

我正在尝试将数据插入到空的JSON数组中,但遇到了麻烦。我在构造函数中定义数组,然后在页面加载时向后端发送一些请求,并在获得响应后,我想将新数组元素添加到现有数组。这是我正在使用的代码:

constructor() {
        super();
        this.state = {
            sds: []
        }
    }
    componentDidMount() {
      axios.get('/userData', {
          params: {
              user: this.props.auth.user.name
          }
      }).then(res => {
        for(var i=0; i<res.data[0].chemID.split(',').length; i++){
          if(res.data[0].chemID.split(',')[i] != 0){
              axios.get('/chemData', {
              params: {
                id: res.data[0].chemID.split(',')[i]
              }
             //This is where I want to insert the data
            }).then(res => this.sds += ({
              id: i,
              title: res.data[0].chemName,
              selected: false,
              key: 'sds'
            }))
          }          
        }
      })
  }


慕码人8056858
浏览 635回答 4
4回答

RISEBY

+=不是这样的。使用扩展运算符复制数组的先前内容,然后手动添加新对象 -}).then((res)&nbsp;=>&nbsp;{ &nbsp;&nbsp;const&nbsp;newThing&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;id:&nbsp;i, &nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;res.data[0].chemName, &nbsp;&nbsp;&nbsp;&nbsp;selected:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;key:&nbsp;'sds' &nbsp;&nbsp;}; &nbsp;&nbsp;this.setState(prevState&nbsp;=>&nbsp;({ &nbsp;&nbsp;&nbsp;&nbsp;sds:&nbsp;[...prevState.sds,&nbsp;newThing] &nbsp;&nbsp;}))}你永远不应该试图改变状态,总是使用setState。在这种情况下,您可以将函数作为第一个参数传递,该参数提供先前的状态。这样,您可以确保this.state.sds保留的内容,并将新对象添加到该数组中。

杨__羊羊

您可以尝试使用下一个示例:this.state.sds[this.state.sds.length]&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:&nbsp;i, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;res.data[0].chemName, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selected:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key:&nbsp;'sds' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}将帖子就像@larz所说,你必须使用setState方法来避免代码的意外结果。var&nbsp;newSds&nbsp;=&nbsp;this.stage.sds;newSds[newSds.length]&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:&nbsp;i, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;res.data[0].chemName, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selected:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key:&nbsp;'sds' &nbsp;&nbsp;&nbsp;&nbsp;};this.setState({&nbsp;sds:&nbsp;newSds});你可以得到有关反应生命周期的详细信息在这里和“状态更新被合并”&nbsp;在这里
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript