首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Next.js router.push不更改URL中的区域设置

Next.js router.push不更改URL中的区域设置
EN

Stack Overflow用户
提问于 2022-08-08 00:19:40
回答 1查看 416关注 0票数 -1

我通过将onClick绑定到两个<div>元素来更改区域设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { useRouter } from 'next/router'
// other codes

const router = useRouter()

const changeLocale = (locale) => {
    router.push({
        router: router.pathname,
        query: router.query
    }, router.asPath, { locale })
}

return <div>
    <div onClick={() => changeLocale('en')}>EN</div>
    <div onClick={() => changeLocale('ru')}>RU</div>
</div>

问题是它不改变URL。当我转到/en/about并单击这个RU时,URL不会变成/ru/about

为什么router.push不像预期的那样工作?

EN

回答 1

Stack Overflow用户

发布于 2022-08-08 01:49:04

router.push({})没有router属性!

若要处理路由,请提供区域设置列表,默认区域设置和Next.js将自动处理路由。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// next.config.js
module.exports = {
  i18n: {
    // These are all the locales you want to support in
    // your application
    locales: ['en', 'ru'],
    // This is the default locale you want to be used when visiting
    // a non-locale prefixed path e.g. `/hello`
    defaultLocale: 'en',
  },
}

假设您正在使用next 12,若要向默认区域设置添加前缀,请更新您的下一个配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// next.config.js

module.exports = {
  i18n: {
    locales: ['default', 'en', 'ru'],
    defaultLocale: 'default',
    localeDetection: false,
  },
  trailingSlash: true,
}

接下来,要添加自定义路由规则,请在页面中创建一个新文件middleware.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// middleware.js

import { NextRequest, NextResponse } from 'next/server'

const PUBLIC_FILE = /\.(.*)$/

export async function middleware(req: NextRequest) {
  if (
    req.nextUrl.pathname.startsWith('/_next') ||
    req.nextUrl.pathname.includes('/api/') ||
    PUBLIC_FILE.test(req.nextUrl.pathname)
  ) {
    return
  }

  if (req.nextUrl.locale === 'default') {
    return NextResponse.redirect(new URL(`/en${req.nextUrl.pathname}`, req.url))
  }
}

请访问nextjs docs以了解更多有关地区策略的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73274826

复制
相关文章
[译]区域设置更改和 AndroidViewModel 反面模式
在 ViewModel 中,如果要公开来自资源(字符串、可绘制文件、颜色……)的数据,则必须着重考虑 ViewModel 对象而忽视配置更改,例如区域设置更改。当用户更改其区域设置时,活动将重新被创建,但不创建 ViewModel 对象。
Android 开发者
2019/08/29
1.2K0
[译]区域设置更改和 AndroidViewModel 反面模式
jekyll中URL的设置
在配置文件中添加配置类似于 permalink: /:categories/:year-:month-:day-:title.html
码客说
2019/10/22
2.1K0
更改git url
由于git 仓库url改变,需要更改url,一般情况下更改origin的utl,更改方法为:
意气
2019/05/05
1.6K0
html中的链接不添加http(协议相对 URL)
https://www.fgba.net/static/image/common/logo.png
曾高飞
2021/09/22
2.2K0
Next.js 中的 SEO
Next.js 是一个用于构建服务器呈现的 React 应用程序的框架,使用像 Next.js 这样的框架的好处之一是它可以很容易地针对搜索引擎优化您的应用程序。
海拥
2023/02/27
4.5K0
使用VBA自动更改Excel打印区域
在Excel中,将打印区域设置在移动单元格区域内可能是比较困难的事。你可能希望捕捉特定单元格区域为打印区域,或者让打印区域仅考虑某些列。假设在Excel工作簿中有几个辅助列,不希望打印这些列,但希望这些列可见。可以手动设置打印区域以排除非打印区域,但现在已经添加了更多数据,并且希望以同样的方式更新打印区域。
fanjy
2022/11/16
2.2K0
在Linux系统上实现区域更改
大家好!今天我要和大家分享一个关于在Linux系统上实现免费电脑IP更改的知识。在某些情况下,更改电脑的IP地址可以带来一些好处,比如解决网络连接问题、绕过限制、增强隐私等。而在Linux系统上,你可以采用一些简单的方法来实现免费的IP更改。让我们一起来了解一下吧!
华科云商小孙
2023/09/13
1.2K0
thinkphp3.2.3中设置路由,优化url
需求: 访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313
全栈程序员站长
2022/07/07
1.2K0
thinkphp3.2.3中设置路由,优化url
openCV—访问与操作像素(图片的区域的更改)
结果如下: 位置(0,0)处的像素 - 红:225,绿:138,蓝:128 位置(0,0)处的像素 - 红:200,绿:150,蓝:100
bear_fish
2018/09/19
1.3K0
openCV—访问与操作像素(图片的区域的更改)
ThinkPHP5.1中URL重写.htaccess更改后无效的解决方法
昨天是打算更换项目框架的,决定了这个 ThinkPHP5,我使用的是 5.1 版本 开发中一直不喜欢 URL 中有这个index.php,这个时候就要使用.htaccess 来进行 URL 重写,之前有文章大概介绍了一下简单配置.htaccess 就可以实现的几个功能以及.htaccess 文件使用手册,框架都会通过 URL 重写隐藏应用的入口文件index.php,ThinkPHP 框架和 Laravel 框架的入口文件路径一样,都是在public下面 本地开发使用的是 Apache 环境,所以按照官方文
沈唁
2018/05/24
10.9K1
13.1 设置更改root密码
设置更改root密码目录概要 /usr/local/mysql/bin/mysql -uroot 更改环境变量PATH,增加mysql绝对路径 mysqladmin -uroot password '123456' mysql -uroot -p123456 密码重置 vi /etc/my.cnf//增加skip-grant 重启mysql服务 /etc/init.d/mysqld restart mysql -uroot use mysql; update user set password=passwo
运维小白
2018/02/06
3K0
RestTemplate设置固定的url参数
在使用RestTemplate请求三方接口时:三方接口一般都要求在url后面拼接上固定的几个参数,一般如accessToken进行权限校验。而我们在开发时,请求这些地址,如何避免在url拼接acces
喜欢天文的pony站长
2020/11/09
2.6K0
RestTemplate设置固定的url参数
Typecho设置伪静态去掉url中的index.php
Typecho后台设置永久链接后,域名后会莫名的有index.php,有强迫症的我完全接受不了。例如网址 https://www.blogbig.cn/index.php/archives/robot.html我们就希望网址变成这样像静态页面的形式 https://www.blogbig.cn/archives/robot.html。这就用到了我今天用到的的伪静态了,成功记录一下!
浩瀚博客
2022/03/23
2K0
Typecho设置伪静态去掉url中的index.php
php中时区设置(不设置则时间显示出错)
具体设置方法: 在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC,同时取消这一行代码的注释,即去掉前面的分号就可以了。     如果还不放心则在php中用以下语句进行测试:     $now = date('Y-m-d H:i:s', time());     echo $now."<br/>";
闵开慧
2018/03/30
3.9K0
区域设置 ID (LCID) 表
区域性名称和标识符区域性名称遵循 RFC 1766 标准,格式为“-”,其中 是从 ISO 639-1 派生的由两个小写字母构成的代码, 是从 ISO 3166 派生的由两个大写字母构成的代码。例如,美国英语为“en-US”。在双字母语言代码不可用的情况中,将使用从 ISO 639-2 派生的三字母代码;例如,三字母代码“div”用于使用 Dhivehi 语言的区域。某些区域性名称带有指定书写符号的后缀;例如“-Cyrl”指定西里尔语书写符号,“-Latn”指定拉丁语书写符号。 区域设置描述 简写
张善友
2018/01/19
2.1K0
域名url转发怎么设置_url和域名
原文链接:http://www.enkj.com/idcnews/Article/20161025/9580
全栈程序员站长
2022/11/02
13.7K0
域名url转发怎么设置_url和域名
URL中的#
作者:阮一峰   http://www.ruanyifeng.com/blog/2011/03/url_hash.html
超然
2018/08/03
1.8K0
React服务端渲染-next.js
前台渲染-SPA应用是一个主要阵营,如果说有什么缺点,那就是SEO不好。因为默认的HTML文档只包含一个根节点,实质内容由JS渲染。并且,首屏渲染时间受JS大小和网络延迟的影响较大,因此,某些强SEO的项目,或者首屏渲染要求较高的项目,会采用服务端渲染SSR。
娜姐
2020/09/22
4K0
React服务端渲染-next.js
点击加载更多

相似问题

Next.js -不滚动到顶部的router.push

254

Next.js : router.push不刷新页面

14

参数在router.push中的Next.js

14

更改应用程序的区域设置而不更改Windows区域设置

35

Next.js:带状态的Router.push

214
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文