我正在try 将我的getserverside props()移植到next13,并且需要使用url.如何获取参数(从目录 struct )或url.我的页面路径是/posts/{postId}.这是我正在try 使用的代码

'use client'

async function fetchOnePost() {
  // need to access URL path or param `{postId}` here
}

export default async function Page() {
    const postData = await fetchOnePost();

return(<>....</>);
} 

这是我的目录 struct ,指向该文件

app/
 - posts/
     - [postId]/
         - page.js

基本上,我想要与Pages目录(/Pages/post/[postID].js)中使用的以下代码相同的应用程序目录代码:

export async function getServerSideProps(context) {
  const { postId } = context.query;

  const something = somthingDoneWithPostId(postId)

  return { props: { something } };
}

推荐答案

根据docs,你应该可以这样做:

export default function Page({ params, searchParams }) {
  return <h1>My Page</h1>
}

使用打字脚本时也是如此:

export default function Page({
  params,
  searchParams,
}: {
  params: { slug: string }
  searchParams: { [key: string]: string | string[] | undefined }
}) {
  return <h1>My Page</h1>
}

在您的特定情况下,您的代码将如下所示(使用服务器组件):

export default async function Page({ params }) {
  const postId = params.postId;

  const something = somethingDoneWithPostId(postId)

  return(<MyComponent something={something} >....<MyComponent/>);
} 

Javascript相关问答推荐

是什么原因导致此Angular 16应用程序中类型错误时属性结果不存在?

使用AJX发送表单后,$_Post看起来为空

微软Edge Select 间隙鼠标退出问题

使用续集和下拉栏显示模型属性

如何在Connect 4游戏中 for each 玩家使用位板寻找7形状?

仅针对RTK查询中的未经授权的错误取消maxRetries

如何将Map字符串,布尔值转换为{key:string;value:bo布尔值;}[]?<>

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

使用GraphQL查询Uniswap的ETH价格

如何解决useState错误—setSelect Image不是函数''

如何从HTML对话框中检索单选项组的值?

编辑文本无响应.onClick(扩展脚本)

使用getBorbingClientRect()更改绝对元素位置

如果没有页面重新加载Angular ,innerHTML属性绑定不会更新

将多个文本框中的输出合并到一个文本框中

无法设置RazorPay订阅API项目价格

如何在Java脚本中并行运行for或任意循环的每次迭代

KeyboardEvent:检测到键具有打印的表示形式

为什么我的InDesign Java脚本不能完全工作?

JavaScript structuredClone在Chrome/Edge中获得了非法调用,但在NodeJS中没有