如何在 Next.js/React 中使用带有 @prismicio/client 库的时间线参考

Posted

技术标签:

【中文标题】如何在 Next.js/React 中使用带有 @prismicio/client 库的时间线参考【英文标题】:How to use a timeline ref with @prismicio/client library in Next.js/React 【发布时间】:2021-10-12 09:48:33 【问题描述】:

我正在使用 @prismicio/client 库从 Next.js 应用程序中的 Prismic 获取数据,但我不知道如何将预览模式和它提供的预览引用连接到 client.query 调用为了获取该特定时间线参考的数据。

我尝试在library itself 的技术参考和how to use Preview mode 的指南中查找此内容。他们都提到我可以使用 refs,但没有显示一个实际的例子。这是我当前的设置,它不起作用:

在我的preview.ts 页面中,我有这个自定义的getServerSideProps 函数,它使用对我的 CMS 处理程序的自定义调用,我在其中传递了 ref 令牌:

export const getServerSideProps = async (context: NextPageContext): Promise<unknown> => 
    const lang = getLangFromContext(context);
    const  slug  = context.query as  slug: string[] ;
    const  token, documentId  = context.query;

    if (!token) 
        return console.warn(`No token available, check your configuration`);
    

    const  pageComponents, meta  = await getCmsPage(slug ? slug.join("/") : "", lang, token);
    return  props:  pageComponents, meta  ;
;

调用 Prismic API 时:

    const client = Prismic.client(refApiUrl, 
        accessToken: apiToken,
    );

    const res: any = await client.query(predicates, 
        key: refToken,
    );

这会导致服务器端错误:

Error: Unknown field key
    at SearchForm.set (C:\main\Sprybase\projects\prismic-integration\dist\node_modules\@prismicio\client\cjs\@prismicio\client.js:200:19)
    at ResolvedApi.query (C:\main\Sprybase\projects\prismic-integration\dist\node_modules\@prismicio\client\cjs\@prismicio\client.js:606:25)
    at C:\main\Sprybase\projects\prismic-integration\dist\node_modules\@prismicio\client\cjs\@prismicio\client.js:1164:63
    at processTicksAndRejections (internal/process/task_queues.js:88:5)

我做错了什么?将时间线引用传递给 Prismic 客户端调用的正确方法是什么?

【问题讨论】:

【参考方案1】:

您的应用程序中似乎没有使用getPreviewResolver 函数或linkresolver,工具栏使用它来获取正确的页面并在浏览器顶部加载预览cookie。

您以这种方式进行预览有什么原因吗?

谢谢。

【讨论】:

以上是关于如何在 Next.js/React 中使用带有 @prismicio/client 库的时间线参考的主要内容,如果未能解决你的问题,请参考以下文章

如何在头组件中使用效果(ReactJS/Next.js)

如何防止在我的 Next/React 项目中使用 iPhone 上的 AirPlay

Next.js + React 返回上一页

在 next.js / react 中映射时无法访问值

Next.js + react 中的路由守卫

Next.js/React 在组件中生成随机值时发出警告