我正在通过一个API在pageload上获取数据。这个API非常慢,我知道getServerSideProps对此无能为力。我的问题是,它直到数据被获取后才开始导航...这需要大约6-8秒。这让网站看起来像是没有响应。
我希望在等待提取数据时加载页面的框架。
这可能吗?
下面是我的代码(简化-我在gSSP中进行了两个API调用,这是它花费这么长时间的部分原因)
`export async function getServerSideProps () {
const [data1Res, data2Res] = await Promise.all ([
fetch ('url1'),
fetch ('url2')
]);
const [data1, data2] = await Promise.all([
data1Res.json(),
data2Res.json()
]);
return {
props: { data1, data2 }, // will be passed to the page component as props
}
}`
我尝试过使用getInitialProps或getStaticProps,但没有任何帮助。我也尝试过将页面加载添加到_app.jsx,但没有任何作用。
我想把我的提取放在一个API路径中,然后在客户端调用那个API路径...唯一的问题是,如果有两个API调用,可能会使API加载更慢。但是,这样至少会有即时导航和一个框架,这样用户就知道网站没有响应了。
这是Next.js特有的问题吗?看起来这是一个很常见的问题。希望我在这里遗漏了一些基本的东西。
基本上,我不在乎我的API调用需要这么长的时间,但我只是需要它不要感到如此严重的无响应。
1条答案
按热度按时间wlsrxk511#
您需要修改链接来获取数据吗?如果需要,也许只有修复API才能有所帮助。否则,您可以在初始化时获取数据,然后按搜索查询进行过滤