【发布时间】:2021-08-29 03:32:04
【问题描述】:
我正在制作一个反应应用程序,该应用程序与一个向我的应用程序提供数据的 API 配合使用。在我的数据库中,我有关于地图上大头针的数据。我想在我的反应应用程序上显示这些引脚的信息,我希望它们呈现。我通过 axios 和这个 url 获得了这些信息:http://warm-hamlet-63390.herokuapp.com/pin/list 我想使用 axios.get(url) 从该 url 检索信息,对 JSON 数据进行字符串化,然后将其解析为引脚数组。
问题: 我的页面将在我从服务器取回数据之前呈现,因为 axios 是异步的,所以我将无法显示任何内容。 UseEffect 和 useState 不起作用,因为我首先需要一些东西(我认为)。
我尝试过的: 我尝试使用 useEffect 和 useState,但正如我所说,我认为我首先需要一些东西来改变它。我也尝试使用await,但是await不会停止整个React App,直到它有响应,尽管如果有什么东西可以停止应用程序并等到我有包含信息的数组以便我可以显示然后在应用程序上。我用异步尝试了一切。我对 React 还很陌生,所以我可能有一些基本的东西(?)。我已经做了好几天了,我无法以任何方式让它工作。任何帮助、youtube 视频、文档、示例都是帮助。任何事物。我到底要如何渲染需要等待服务器响应的东西?
我的代码:
//function that stores the data in the result array,
//but result array will only be available after the
//server response, and after the page is rendered
async function pin(){
const result = []
var url = "http://warm-hamlet-63390.herokuapp.com/pin/list"
const res = await axios.get(url)
console.log(res.data.data);
if(res.data){
const txt = JSON.stringify(res.data.data)
const result = JSON.parse(txt)
console.log(result);
}
return result;
}
class App extends React.Component{
render(){
return(
<div>
<Pin/>
<Mapa/>
</div>
)
}
}
export default App
【问题讨论】:
-
你是在渲染组件还是数据?
-
任何解决方案都可以,因为我想在组件上使用上述数据,这有意义吗?
-
你不能把结果写到this.someVar = result;然后用 if(someVar)? 在模板中检查它?
-
那么,哪个答案对您有帮助?对于花时间帮助您和潜在未来观众的人,您应该将其标记为正确。这是使这个网站很棒的部分原因。
标签: javascript reactjs async-await axios