【发布时间】:2022-01-16 16:02:18
【问题描述】:
所以我正在渲染一系列帖子。每个帖子都有一个与之关联的唯一用户 ID,我试图在另一个 API 调用中使用它来返回该帖子的用户图像。
目前我的设置是这样的
渲染帖子
{data?.map((data) => (
<div className="allpostsingle" key={data.id} onClick={() => sendTo(data.id)}>
<div className="allpostheader">
<img src={getUrl(data.user)}/>
<p>{data?.description}</p>
</div>
</div>
))}
获取图片地址的函数
const getUrl = async (id) => {
let url = `http://127.0.0.1:8000/api/user/${id}/`
const response = await fetch(url)
const data = await response.json()
const avatarurl = data.avatar
return avatarurl
}
这个问题是它返回一个承诺而不是 URL。我知道您可以将其设置为获取 url 的状态,但它不会对每个帖子都是唯一的?
我只是想知道如何解决这个问题,或者是否有其他方法可以解决这个问题。
【问题讨论】:
-
需要调用getUrl方法getUrl()
-
单独获取每个用户数据不是一个好主意,而是您可以在一个请求中获取所有用户数据然后呈现它
-
data.avatar的格式是什么?是url还是base64编码的图片数据?
-
如果我认为可能的话,您必须包含用户数据才能在后端发布数据
-
这不可能获取包含用户的所有帖子数据?如果不是,您只需要使用 promiss.all in useEffect 获取所有用户数据,然后获取帖子数据
标签: javascript reactjs fetch-api