在React上更新数组的状态

时间:2019-03-13 17:32:06

标签: reactjs axios

我从API获得的响应数据有问题。我使用axios来获取JSON对象,并且每次调用API时,状态都应由对象列表替换。

这是代码。

https://i.stack.imgur.com/yHXn0.png

这是控制台

https://i.stack.imgur.com/KnHD2.png

我想我正在错误地更新状态,但是我看不到它是什么。

1 个答案:

答案 0 :(得分:0)

您的错误消息很清楚。

  

无法读取未定义的属性“ push”

那是什么意思?这意味着您在尚未定义的变量上调用了方法push

let paineis = empresas.map( (empresa, i) => {
    paineis.push(<Painel key={i} nome={empresa.nome} usuarios={empresa.usuarios} />)
//  ^-----^
//  this is the issue. paineis has not yet been assigned a value!
})

真正的问题是您使用的map错误。映射中的返回值是push新值的方式。您想改为这样做

let paineis = empresas.map( (empresa, i) => <Painel key={i} nome={empresa.nome} usuarios={empresa.usuarios} />)

这是ES6退货的简写,也可以写成

let paineis = empresas.map( (empresa, i) => {
  return <Painel key={i} nome={empresa.nome} usuarios={empresa.usuarios} />
})