面试题答案
一键面试- 获取动态路由所需路径数据的方式:
- 在
pages/[id].js
这样的动态路由页面中定义getStaticPaths
函数。它通常从数据源(如数据库、文件系统等)中读取数据。例如,如果数据源是一个 JSON 文件,通过读取 JSON 文件获取所有可能的id
值,然后返回包含这些id
的路径数组。代码示例:
export async function getStaticPaths() { const res = await fetch('https://example.com/api/data'); const data = await res.json(); const paths = data.map((item) => ({ params: { id: item.id.toString() } })); return { paths, fallback: false }; }
- 在
- 运行环境:
getStaticPaths
在 服务器端 运行。它是 Next.js 静态生成过程的一部分,在构建时运行,而非在客户端浏览器中运行。这确保了在构建阶段就能确定所有动态路由的路径,以便生成相应的静态页面。
- 数据结构:
getStaticPaths
函数需要返回一个对象,该对象包含两个主要属性:paths
:是一个数组,数组中的每个元素是一个对象,对象有params
属性,params
是一个包含动态路由参数的对象。例如[{ params: { id: '1' } }, { params: { id: '2' } }]
。fallback
:是一个布尔值。当设置为false
时,表示只有paths
中指定的路径会被静态生成;当设置为true
时,如果用户访问一个不在paths
中的路径,Next.js 会在用户首次请求时在服务器端生成该页面。如果设置为blocking
,Next.js 会在构建时预渲染所有可能的路径,即使它们不在paths
中。