在NextJS中,可以在构建时静态查询内容,也可以在运行时动态查询内容(使用SSR或CSR)。
// pages/home.jsimport { client } from '../[pathToTina]/tina/__generated__/client'const getStaticProps = async () => {let postResponse = {}try {postResponse = await client.queries.post({ relativePath: 'HelloWorld.md' })} catch {// 吞掉与文档创建相关的错误}return {props: {data: postResponse.data,query: postResponse.query,variables: postResponse.variables,},}}
您可能希望为动态路由查询Tina的内容API。
export const getStaticPaths = async () => {const postListResponse = await client.queries.postConnection()return {paths: postListResponse.data.postConnection.edges.map((page) => ({params: { filename: page.node._sys.filename },})),fallback: 'blocking',}}
fallback: "blocking"
在Next.js中,可以指定fallback: "blocking"
,这允许getStaticProps
在请求时在服务器端运行,当用户访问getStaticPaths
中未指定的页面时。这允许文档创建与Tina一起工作,以及高级的NextJS功能如ISR。
有关Tina + NextJS的完整工作示例,请查看我们的"Barebones Starter"。
// pages/home.jsimport { client } from '../[pathToTina]/tina/__generated__/client'const getServerSideProps = async () => {let postResponse = {}try {postResponse = await client.queries.post({ relativePath: 'HelloWorld.md' })} catch {// 吞掉与文档创建相关的错误}return {props: {data: postResponse.data,query: postResponse.query,variables: postResponse.variables,},}}