reactjs 无法向嵌套数组中添加值

ryoqjall  于 2023-03-17  发布在  React
关注(0)|答案(1)|浏览(111)

初始状态下的数组值如下:

const [chartData, setChartData] = useState([["Type", "Counts"]]);

并从服务器检索以下值:

response.data:Object

Bird: 4
Cat: 8
Dog: 5

我需要这个数组:

const piedata = [
  ["Type", "Counts"],
  ["Bird", 4],
  ["Cat", 8],
  ["Dog", 5]
];

我正在尝试类似的方法,但是在每种情况下,我都会添加这3个元素作为外部列表的第2个元素,例如:[["Type", "Counts"], [["Bird", 4], ["Cat", 8], ["Dog", 5]]];

getData("/pets", body)
      .then((response) => {
       let array = Object.entries(response.data).map(([k, v]) => "[" + k + "," + v +"],")
       chartData.push(array)
      })

那么,什么是正确的方法来实现这一点呢?我应该同时使用setChartData钩子和push元素到外部数组吗?
也尝试了这个,但没有工作:

Object.entries(response.data).map(([k, v]) => chartData.push([ k + "," + v ] + ","))
k4ymrczo

k4ymrczo1#

这里有很多错误:
1.你不能像那样推到状态,你必须使用setChartData

  1. "[" + k + "," + v +"],"它是字符串而不是数组
    你应该做什么:
setChartData([...initialArray, ...Object.entries(piedata)])

香草js证明它的工作:

let initialArray = [
  ["Type", "Counts"]
]
const piedata = {
  Bird: 4,
  Cat: 8,
  Dog: 5
}

initialArray = [...initialArray, ...Object.entries(piedata)]
console.log(initialArray)

相关问题