【问题标题】:Cannot get array with useState and axios in react [closed]在反应中无法使用useState和axios获取数组[关闭]
【发布时间】:2022-11-14 08:33:05
【问题描述】:

我有这样的数据库

这是我的代码

我尝试过了:

  • 检索 ymd,然后将其作为 ['2019-03-12', '2019-09-24'] 之类的数组放入incomeHistoryLabel
  • 检索dailyRevenue,然后将其作为[432,345] 之类的数组放入receiverHistoryData

但是在我调用 setRevenueHistoryLabel() 和 setRevenueHistoryData() 之后,receiveHistoryLabel 和incomeHistoryData 仍然是空数组。

我不知道他们为什么是空的。 感谢您的帮助。

【问题讨论】:

    标签: reactjs react-hooks axios


    【解决方案1】:

    你能试试这个吗?

    setRevenueHistoryLabel([
      ...revenuHistoryLabel,
      ...res.data.map((element) => element.ymd),
    ]);
    
    setRevenueHistoryData([
      ...revenuHistoryData,
      ...res.data.map((element) => element.dailyRevenue),
    ]);
    

    似乎在setState 中使用spread expression 是错误的。

    【讨论】:

    • 我试过了。它们仍然是空数组
    • @Khang-Truong 首先,尝试检查res.data 的值。
    • @Khang-Truong 当你说它们是空的时,你是如何检查的?设置状态后立即获取日志?
    • 你好。现在可以了。当我尝试您的代码并运行 console.log(revenueHistoryLabel[0]);我可以得到我想要的结果。谢谢
    【解决方案2】:

    axios.get("") 把你的链接放在这里,尽管把它放到另一个变量中

    有时会发生这种类型的错误,请尝试让我知道。

    【讨论】:

    • 不,这在任何一种情况下都应该可以正常工作......
    • 我试过了。不工作
    • 太好了,你找到了答案!
    【解决方案3】:

    这是答案。 console.log 现在显示数组。谢谢

    【讨论】:

    • 它应该是 @ChanHyeok-Im 的回答 .... setRevenueHistoryLabel(...revenueHistoryLabel, ...res.data.map(...)) 你也应该传播映射数据
    • 我按你说的改了。谢谢
    猜你喜欢
    • 2019-05-02
    • 2019-08-09
    • 2020-04-16
    • 2018-10-05
    • 2021-06-15
    • 1970-01-01
    • 2021-05-03
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多