javascript - 通过对象数组和数组来 react 映射

标签 javascript arrays reactjs

我有如下内容:

const [channelAndReadsArray, setChannelAndReadsArray] = useState()

var channelAndReads = []
const requests = channels.map((currentChannel) => {
    axios.get(serverRestAddress...
                        .then((result) => {
        var element = {}
        element.channel = currentChannel;
        element.reads = result;
        channelAndReads.push(element);
    })
                    })

Promise.all(requests).then(() => {
    setChannelAndReadsArray(channelAndReads)
});

            ...

if (!channelAndReadsArray) {
    return null
})


channelAndReadsArray.map((channelAndReads) => {
    console.log(channelAndReads)
})

这在控制台日志中给了我空值。 我不确定这里出了什么问题

最佳答案

要使 Promise.all() 正常工作,您需要从 channels.map 返回一个 Promise。您可以返回每个元素,然后使用 Promise.all 中的列表来存储它们。

示例(未测试):

const [channelAndReadsArray, setChannelAndReadsArray] = useState()

const requests = channels.map((currentChannel) =>
  axios.get(serverRestAddress)
  .then((result) => ({
    channel: currentChannel,
    reads: result
  }))
)

Promise.all(requests).then((elements) => {
  setChannelAndReadsArray(elements)
});

if (!channelAndReadsArray) {
  return null
})


channelAndReadsArray.map(console.log)

关于javascript - 通过对象数组和数组来 react 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58352510/

相关文章:

javascript - GSheet 的 Google 应用脚本 - 在 B 列上查找今天的日期,并在同一行的 C 列上写入当前时间

javascript - ReactJS - 如何将 "global"数据传递给深层嵌套的子组件?

javascript - 选择值更改无法识别并传递给 ajax

javascript - Rails + Ember + Ember 数据空 JSON 响应

arrays - 当源表只有一行时,使用 MATCH 的数组公式不会给出结果

java - 生成随机数字对,不重复

ios - 解析`objectSaveInBackground`,全部保存或全部保存

javascript - 在 Javascript 中使用 isAbsolute() 函数无法按预期工作

reactjs - 如何在 single-spa 中跨不同的微应用程序共享数据

javascript - css 或 jQuery 中的半透明效果?