首页 > 解决方案 > 如何在 ArrayObject React native 中设置状态数组

问题描述

我已经坐了一段时间试图弄清楚如何做到这一点我已经搜索了很多关于 StackOverFlow 的文档(也许我错过了)

this.state = {
        data: {
                labels: [],
                datasets: [
                    {
                        data: []
                    }
                ]
            }
        };

我尝试使用以下代码如何为 2 个数组 Labels:[] 和 data:[] setState CONCAT

我的代码:

  this.setState(a => ({
       data: {
          labels: this.state.data.labels.concat(x.month), <- is this correct?
          datasets: [
                      {
                        data: this.state.data.datasets.map(x=> x.data.concat(x.money/1000))
                     or //data: this.state.data.datasets[0].data.concat(x.money/1000))
                       }
                    ]
              }
           }
        )
     )

JS

data: {

                labels: [],
                datasets: [
                    {
                        data: []
                    }
                ]
       }

如何指向数据数组?

标签: javascriptreactjsreact-native

解决方案


你可能知道,react/react-native 中的状态更新是异步的。因此,您编写的代码有时可能会导致一些奇怪的行为。例如,同时为该状态更新调用多个函数可能会导致意外的结束状态。

相反,您可以按以下方式更新您的状态


this.setState((state, props) => ({
   data: {
      labels: state.data.labels.concat(x.month),
      datasets: state.data.datasets.map(({data}) => ({data: data.concat(x.money/1000)}))
    }
  })
)

推荐阅读