next.js 接下来,js13服务器组件和重新呈现fetch

dffbzjpn  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(160)

例如,我想从getData函数中切换URL。我有我的主页组件与json todos。我可以通过我的客户端组件将“todos”替换为“users”吗?

import styles from './page.module.css'
import Button from "@/components/Button";

async function getData() {
  const res = await fetch(`https://jsonplaceholder.typicode.com/todos`);
  if (!res.ok) {
    throw new Error('Failed to fetch data');
  }

  return res.json();
}

export default async function Home() {
  const data = await getData();
  return (
    <main className={styles.main}>
      <div>
      {data.map(item => {
        return item.id
      })}
      </div>
      <Button />
    </main>
  )

这是我的按钮。我不完全明白我怎么能改变我的网址在服务器重新呈现。例如,我点击我的按钮,“todos”也改变了“用户”。如果你能写一些例子。

'use client'
export default function Button(props){
    props.getData('users')

    return(
        <button>3</button>
    )
}
zz2j4svz

zz2j4svz1#

我没试过,但应该能用。
您需要在getData中添加参数以接受路由。

async function getData(route) {
  const res = await fetch(`https://jsonplaceholder.typicode.com/${route}`);
...

然后在初始加载时,传入“todos”

const data = await getData("todos");
...

你需要将函数getData传递给按钮,然后调用它。

<Button getData={getData} />

但是,我个人不会这样做,我会创建一个新的路由/user/[id].tsx,然后查询您在该组件中点击的特定用户。这称为动态路由,请参阅Next13文档

相关问题