【问题标题】:How to interpolate query string on NextJS如何在 NextJS 上插入查询字符串
【发布时间】:2021-02-03 11:58:00
【问题描述】:

我正在使用next/link 指向特定页面。链接组件如下所示:

<Link
    href={{
      pathname: `/users/[slug]?lang=${lang}`,
      query: { slug, lang },
    }}
>
 Click me
</Link>

lang 是用户选择的语言 (i18)。

问题

每次我到达有问题的页面,刷新后我都会收到这个错误:

Error: The provided "href" (/users/[slug]?lang=en) value is missing query values (slug) to be interpolated properly. Read more: https://err.sh/vercel/next.js/href-interpolation-failed

但我的 URL 看起来像这样 http://localhost:3000/users/Y0901083155?lang=en 其中 slug 是 Y0901083155 而 lang 是 en

页面架构

├──_app.js
├──index.js
├──user/ --------------> folder
   ├──[slug]/ --------> folder
      ├── edit/    ----> folder
      ├── create/  ----> folder
      ├── index.tsx

【问题讨论】:

    标签: reactjs next.js react-i18next


    【解决方案1】:

    您应该在路径名中包含slug,并在查询对象中传递lang

    // Assuming slug='some-slug', and lang='en'
    
    <Link
        href={{
            pathname: `/users/${slug}`, // Will match `/users/some-slug` path
            query: { lang } // Will pass `?lang=en` as query param
        }}
    >
        Click me
    </Link>
    

    【讨论】:

    • 这个解决方案对我不起作用。我仍然遇到同样的错误
    • 我看过你的代码沙箱。我意识到我的页面架构与您的不同。让我用我的架构更新我的问题
    • 即使使用您的文件夹结构,我的解决方案仍然有效。我已经更新了代码框以反映您的结构。
    • 是的,我看到了。我真的不知道我的代码有什么问题。无论如何,谢谢你帮助我
    • 如果您可以提供有关该问题的 repo/codesandbox,我很乐意通过它并提供帮助。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2023-03-30
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多