【发布时间】:2019-05-18 02:15:14
【问题描述】:
我对@987654321@ 非常熟悉,但对后端nodejs 很熟悉。但是我遇到了一个场景,我必须在前端使用它。
我得到了一系列对象,在这些对象中我得到了lat lng 的地方。现在使用react-geocode 我可以获得单个lat lng 的地名,但我想在地图函数中使用它来获取地名。所以正如我们所知,async 打电话我必须在那边使用async await。
这里是代码
import Geocode from "react-geocode";
render = async() => {
const {
phase,
getCompanyUserRidesData
} = this.props
return (
<div>
<tbody>
await Promise.all(_.get(this.props, 'getCompanyUserRidesData', []).map(async(userRides,index) => {
const address = await Geocode.fromLatLng(22.685131,75.873468)
console.log(address.results[0].formatted_address)
return (
<tr key={index}>
<td>
{address.results[0].formatted_address}
</td>
<td>Goa</td>
<td>asdsad</td>
<td>{_.get(userRides,'driverId.email', '')}</td>
<td>{_.get(userRides,'driverId.mobile', '')}</td>
</tr>
)
}))
</tbody>
</div>
)
}
但是当我在这里使用 async 和 map 函数时,它不会返回任何内容。谁能帮我看看哪里出错了?
【问题讨论】:
-
render函数将 UI 呈现给浏览器,所以这不是您想要进行异步调用的地方 -
那么还有其他方法可以解决吗?
-
@Profer 是的。让它成为父组件的状态,一旦设置状态(即异步数据进入),就会有条件地呈现子组件。这在任何 React 应用程序中都是相当标准的,并且 IIRC 早在官方教程中(我可能记错了)。
-
@JaredSmith 你能举个例子吗?顺便说一句,IIRC 是什么?
-
@Profer 如果我没记错的话
标签: javascript reactjs asynchronous promise async-await