【发布时间】:2019-02-10 15:53:17
【问题描述】:
我正在尝试影响包含在数组中的所有 API。我使用 promise all 来获取数据,最终得到了我想要的数据。但是,我无法将结果从 Promise.all 函数存储到新数组或对象中。我如何将来自 API 的数据存储在 React 中的无状态组件上。所以这个方法的期望我可以称之为 {dataJSON.title}
import React from 'react'
const ApiComponent = (props) => {
// props.film content
//["https://swapi.co/api/films/2/","https://swapi.co/api/films/6/"]
let dataJSON = []
Promise.all(
props.film.map(url =>
fetch(url)
.then(response => response.json())
.then(
parseJSON => ({
title: parseJSON.title,
episode: parseJSON.episode
})
)
.then(
dataJSON => push[dataJSON]
)
))
return (
// expecting return will call like this
{
dataJSON.title
}
)
}
export default ApiComponent;
【问题讨论】:
-
简短的回答是你不能。 Promise 是异步的。您需要使用状态或从更高级别传入数据
-
无状态真的是正确的方法吗?每次渲染这个组件时,它都会触发网络请求!如果要分离关注点,可以将组件拆分成container and a presentation component。
-
我注意到它是异步的,这就是为什么我想存储到新的对象/数组中,这样我就可以从新的对象/数组中调用数据。那是我在想是否可以使用这种方法
标签: javascript reactjs es6-promise