【问题标题】:NextJS i18 trigger page reload on locale changeNextJS i18 在区域设置更改时触发页面重新加载
【发布时间】:2021-02-12 05:15:19
【问题描述】:

用户选择语言后,如何从代码中触发页面重新加载?

我正在使用 Next JS 10.0 和新的 i18 功能,所以我的两个网址是

  • localhost/en/dashboard
  • localhost/sp/dashboard

在我的反应按钮上单击我尝试过

router.push(`/${lang}/Dashboard`)

这可行,但是有没有一种方法可以让我不必手动重新编码当前页面位置?

【问题讨论】:

    标签: reactjs next.js i18next


    【解决方案1】:

    您不得将lang 或语言环境用作您的网址字符串的一部分。请尝试以下方法。

        router.push('/dashboard', '/dashboard', { locale: 'YOUR_NEW_LOCALE' })
    

    如果您想知道为什么有两个“/dashboard”,那是因为第一个是to,第二个是asYou can read about it more here

    【讨论】:

    • 非常感谢!我只有一个问题,我怎么知道我在哪个 URL 上?如果我尝试使用 window.location 来计算,这将会很混乱,因为它已经有 /en/dashboard 所以我必须手动解析它?基本上可以在任何页面上更改语言,因为它是我顶部导航栏的一部分
    • router.pathname 将为您提供您所在的位置。此外,如果您尝试在没有任何其他功能的情况下从一个页面导航到另一个页面,您应该考虑使用Link 标记。您可以在我在答案中包含的链接中阅读。
    【解决方案2】:

    你可以使用

    router.reload()

    Docs

    【讨论】:

    • 谢谢!我刚刚在文档中看到您可以通过很棒的语言环境。更改语言时,您会重新刷新整个页面吗?这会进行硬刷新,是正确的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多