最近在写 Next (v14 App Router)时,发现运行 next build 出现了以下错误:
Linting and checking validity of types ...Failed compile.
"src/app/home/updatelog/bugfix/page.tsx" has an invalid "default" export: Type "{ type: number; }" is not valid.
查看报错是在 Next 进行类型检查时出现的,根据给出的文件路径查看相关文件:
发现组件定义并没有错,而且传入的参数的类型也没写错。
但报错却出现了 export: Type "{ type: number; }" is not valid. ,试着取消传递参数,再重新 build 时,发现就没报错了。
在其父文件中,是这样定义的:
解决
由于 Next 的路由是基于文件系统的,也就是说每个页面都是一个单独的组件文件,当然这里说的”每个页面”指的是在 pages 目录下或者 app 目录下的页面。正是由于这样的特点,Next 就不能像传统的 SPA 应用一样在组件之间传递 Props 了。但这并不是说 Next 的页面组件不能接受参数,它可以接受参数,但并不能像 SPA 应用一样可以接收从另一个组件传递过来的参数。
要在 Next 中的页面之间传递属性,可以通过 getStaticProps 、 getServerSideProps、fetch 等数据获取方法