当前位置: 首页 > wzjs >正文

望江县住房和城乡建设局网站wordpress单页插件

望江县住房和城乡建设局网站,wordpress单页插件,app开发 上传wordpress,十堰网站建设费用前言 最近几天用 next.js 开发了一个小项目,之前的项目基于 next.js 时,我都是使用的 jsx 的方式进行开发。而这次给客户升级,我升级为了 tsx 的方式进行开发,并且把 next.js 升级到了最新的 v15 版本。在开发过程中,…

前言

最近几天用 next.js 开发了一个小项目,之前的项目基于 next.js 时,我都是使用的 jsx 的方式进行开发。而这次给客户升级,我升级为了 tsx 的方式进行开发,并且把 next.js 升级到了最新的 v15 版本。在开发过程中,遇到几个小坑,这里记录一下。

NEXTJS

目录构建

好,我的 nextjs APP 的目录构建如下所示:

src/app
├── article
│   └── [id]
│       └── page.tsx
├── channel
│   └── [id]
│       ├── [page]
│       │   └── page.tsx
│       └── page.tsx
├── layout.tsx
└── single└── [id]└── page.tsx

好,以上路径匹配路由为

# 首页
/
# 栏目页面
/channel/[id]
# 栏目分页页面
/channel/[id]/[page]
# 文章页面
/article/[id]
# 其他省略。

坑1,在页面中获取动态 id 失败

一开始,我用一下代码获取动态 id,结果获取失败。

export type PageChannelParamsTypes = {params: {id: stringpage?: string}
}export default async ({ params }: PageChannelParamsTypes) => {const { id, page: paramPage = 0 } = params//...
}

用 DeepSeek 和 Claude 3.5 两个 AI 问了半天,都解决不了,无奈,查询官方文档,最终解决了问题。调整后的代码如下:

export type PageChannelParamsTypes = {params: {id: stringpage?: string}
}export default async ({ params }: PageChannelParamsTypes) => {const { id, page: paramPage = 0 } = await params//...
}

OK, 终于可以获得 id 等参数了。我告诉 DeepSeek ,这里需要加一个 await ,DeepSeek 跟我犟嘴,非说我的代码是错误的。。。。

不管它,终于跑起来了。

坑2, 在编译过程中,提示出现失败

终于,把项目开发差不多了,准备编译一下,开心的运行了 pnpm run build 命令,然后我心拔凉拔凉的,编译失败,有如下报错:

 next build▲ Next.js 15.1.8Creating an optimized production build ...✓ Compiled successfullyLinting and checking validity of types  ...Failed to compile.src/app/article/[id]/page.tsx
Type error: Type 'PageParamsTypes' does not satisfy the constraint 'PageProps'.Types of property 'params' are incompatible.Type '{ id: string; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag]Next.js build worker exited with code: 1 and signal: null

继续问 AI,答非所问,乱改一通。全部拒绝后,再次翻阅官方文档,终于解决了问题,最终代码如下:

export type PageChannelParamsTypes = {params: Promise<{id: stringpage?: string}>
}export default async ({ params }: PageChannelParamsTypes) => {const { id, page: paramPage = 0 } = await params//...
}

在类型定义的时候,需要给 id 和 page 这个对象,包裹上 Promise 才能通过编译。并且,在编辑器里,不再提示这个 await 是多余的了。

编译结果
最终顺利通过编译。

官方文档

官方文档地址如下:https://nextjs.org/docs/app/api-reference/file-conventions/page#params-optional
官方文档截图

小结

有时候,尤其是 AI 开始瞎编乱造时,一定要查阅官方文档,不能过度信赖 AI。

也怪我自己看得不仔细,第一次看的时候,只注意到了 await,没注意到上面还有一个 Promise 最终在一个坑里被埋了两次。

哎~还是自己用 nextjs 用得少的缘故。

各位看官,你在开发的过程中遇到过什么坑呢,欢迎在评论区交流!顺便用发财的小手点一下赞吧!谢谢!

http://www.dtcms.com/wzjs/568239.html

相关文章:

  • 个人做外贸商城网站广东网站建设发信息
  • 做设计兼职的网站有哪些工作新手写作网站
  • wordpress 超级留言板网站怎么做才能得到更好的优化
  • 网站策划 要求网站备案部门
  • 中山网站建设怎么样受欢迎的合肥网站建设
  • 站长推荐自动跳转导航入口做服装外贸哪个网站好
  • 深圳市住房和建设局网站->认租申请简网 互联 专业wordpress主机
  • 哪有做网站的公司建瓯市建设银行网站
  • 网站改版需要怎么做如何推广
  • 领券的网站怎么建设wordpress模块设计
  • 外包给网站建设注意事项杭州网站建设哪家快速上线
  • 十大设计创意网站成都建设局网站
  • 新增备案网站司法厅网站建设方案
  • 加盟类网站建设做视频发哪个网站赚钱
  • 和田网站制作广州建设工程交易中心官网网址
  • 贵阳响应式网站开发服务网络是什么
  • 韩国企业网站模板下载网上开店加盟
  • 襄阳大摩网站建设上海松江建设发展有限公司网站
  • 谷哥做网站 是如何推广的免费做计算机题的网站
  • 传统网站和手机网站的区别做网站用的编程语言
  • 翻译软件翻译英语做网站恐怖小说网站怎么做
  • 网站设计登录界面怎么做花都手机网站建设
  • 网站数据库建表网站上的文章做参考文献
  • 免费涨1000粉丝网站.tech域名的网站
  • 旅游网站功能流程图杭州景观设计公司
  • 宁波网站建设 网络服务电商需要投入多少钱
  • 做网站用angular北京和君网站建设
  • 互联网网站开发创业计划书外贸做企业什么网站建设
  • 江西网站设计哪家好西安百度推广服务公司
  • 长春做网站优化哪家好个人如何加入百度推广