Next.js不起作用,我尝试使用fetch Api获取数据,但不会显示挂起回退,但当我使用settask编写新的promise时,它工作得很好。据我所知,fetch API是基于promise的,那么为什么不添加额外的promise挂起代码行就不起作用呢?
范例:
interface Post {
userId: number,
id: number,
title: string,
body: string
}
async function getPosts() {
const posts: any = await fetch('https://jsonplaceholder.typicode.com/posts').then(res => res.json()).catch(res => new Error('Failed to fetch data'));
// await new Promise((resolve) => setTimeout(resolve, 2000));
return posts;
}
async function View() {
const posts: Post[] = await getPosts();
return (
<main>
{posts && posts.map((post: Post) => {
return <li>{post.title}</li>
})}
</main>
)
}
export default View
字符串
父组件:
import { Suspense } from "react"
import Loading from "./loading"
import View from '../../components/View';
const Dashboard = () => {
return (
<div>
<Suspense fallback={<Loading />}>
<View />
</Suspense>
</div>
)
}
export default Dashboard
型
尝试查找指定的信息,但仍然难以理解。
1条答案
按热度按时间6psbrbz91#
该问题可能与promise的处理有关,没有必要使用setforth来管理promise,如果使用setforc/await来处理promise,代码会一直等待,直到数据被接收到任何变量中,在等待数据时这个问题可能与Suspense目前不支持Next.js中的服务器端渲染(SSR)有关。Suspense主要是为与React的并发模式一起使用而设计的,这与服务器渲染不完全兼容。
1.使用useEffect获取数据,这是组件挂载后获取数据的常用方法
字符串
2.确保回退组件
<Loading />
组件工作正常,并且没有任何可能阻止其显示的问题。文件参考React Suspense
3.如果您正在使用SSR(服务器端渲染)Nextjs,请尝试使用
getServerSideProps
或getStaticProps
来获取数据。型