useState将对象追加到对象数组中

时间:2020-04-30 20:24:37

标签: javascript arrays reactjs

我的对象是按照[{},{},{}]

创建对象的数组

状态变量构造器如下:

this.state:{...some states,
            parsed:[{}]}

每个对象都来自具有异步功能的get IPFS

 IPFSREADER = element => {
  ipfs.cat(convertedIPFSaddress).then(result => {
      let cons = result.toString('utf8')
      const consdata = JSON.parse(cons);
      // NEED useState save consdata to parsed state
}

当我获取数据时,我正在用useState将该数据推送到状态,但是我尝试了以下方式:

  1. this.setState({parsed:consdata})结果:> Object:{some data...}

  2. this.setState({...[parsed],parsed:[consdata]})结果:[0:Object:{some data...}]

    • 当有来自ipfs的新数据时,这只会更改数据(位于数组中的位置),而不会追加到先前数据的尾部。
  3. this.setState(parsed => [...data, parsed]);跟在Joseph D.'s answer之后,但抛出ReferenceError: can't access lexical declaration 'data' before initialization错误。尝试将此解决方案更改为上面的功能,如下所示:

    • 将功能更改为异步:IPFSREADER = async element => {..
    • 在ipfs.cat前面添加了等待:const { data } = await ipfs.cat(...

如何解决此问题?我尝试了许多解决方案,但无法更改结果……谢谢。

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试setState({...state, parsed: [...state.parsed, consdata]})