【发布时间】:2021-05-20 20:46:55
【问题描述】:
我使用 async await 获取了 json 数据,我想将获取的数据保存在一个变量中,以便能够将它与我的组件中的地图一起使用, 数据正确地进入函数内部 - 我检查了警报,并且在函数内部的变量中它确实显示了所有数据,但是函数外部的变量以某种方式返回空。 这是一些代码: 以下代码中的两个警报都返回正确的数据。
export let fetchPosts = [];
export async function FetchPosts() {
await axios.get('https://jsonplaceholder.typicode.com/posts').then(
res => {
alert(JSON.stringify(res.data))
fetchPosts = JSON.stringify(res.data);
alert(fetchPosts)
}
).catch(err => {
alert('err');
})
}
import { fetchPosts } from '../services/post';
import { FetchPosts } from '../services/post';
export default function Posts() {
function clickme() {
FetchPosts()
}
return (<>
<button onClick={clickme}>Click me</button>
{fetchPosts.map((post, index) => (
<div key={post.id} className="card" style={{ 'width': '16rem', 'display': 'inline-block', 'margin': '5px' }}>
<div className="card-body">
<h6 className="title">{post.title}</h6>
<p className="card-text">{post.body}</p>
</div>
</div>
))}
</>)
}
【问题讨论】:
-
React 在您获取数据之前进行渲染,然后在数据更改时没有告诉它重新渲染。您需要使用状态和效果挂钩的更全面的解决方案。
标签: node.js json reactjs axios