面试题答案
一键面试实现步骤
- 配置
getStaticProps
函数:在页面组件的getStaticProps
函数中设置增量静态再生的相关参数。 - 设置
revalidate
参数:revalidate
参数用于指定页面数据重新生成的时间间隔(以秒为单位)。
关键代码片段
假设我们有一个动态路由页面 pages/post/[id].js
。
import React from 'react';
import { GetStaticPaths, GetStaticProps } from 'next';
// 模拟数据获取函数
const getPostData = async (id) => {
// 这里应该是实际的数据获取逻辑,例如从数据库或 API 获取
return { title: `Post ${id}`, content: 'This is the content' };
};
export const getStaticPaths: GetStaticPaths = async () => {
// 这里获取所有可能的动态路由参数
const paths = [
{ params: { id: '1' } },
{ params: { id: '2' } }
];
return { paths, fallback: false };
};
export const getStaticProps: GetStaticProps = async ({ params }) => {
const post = await getPostData(params.id);
return {
props: {
post
},
// 设置增量静态再生,每 60 秒重新生成一次页面数据
revalidate: 60
};
};
const PostPage = ({ post }) => {
return (
<div>
<h1>{post.title}</h1>
<p>{post.content}</p>
</div>
);
};
export default PostPage;
在上述代码中:
getStaticPaths
函数定义了所有可能的动态路由参数。getStaticProps
函数通过revalidate
参数配置了增量静态再生,每 60 秒重新生成一次页面数据。数据获取逻辑在getPostData
函数中模拟,实际应用中应替换为真实的数据获取代码。