【问题标题】:How to pass custom props to a dynamic page in Next js如何将自定义道具传递给 Next js 中的动态页面
【发布时间】:2021-12-28 13:45:41
【问题描述】:

我有一个名为Card.js 的组件,只要点击卡片,它就会链接到动态页面。我需要将“类别”之类的值传递给动态页面[id].js,这样我就可以在那里做更多的逻辑。

卡片.js

import { useRouter } from "next/router";

import React from "react";

function Card({ id, post, category }) {
  const router = useRouter();

  const Redirect = (e) => {
    e.preventDefault();
    router.push(`/${id}`);
  };
  return (
    <div
      onClick={Redirect}
    >
      
    </div>
  );
}

export default Card;

[id].js

  function PostPage() {

  
    return (
      <>
        
      </>
    );
  }
  
  export default PostPage;

【问题讨论】:

标签: javascript reactjs next.js


【解决方案1】:

您可以使用router.push() 传递一个值,方法是将其添加到下一页的 url 查询中

const Redirect = (e) => {
    e.preventDefault();
    router.push({pathname: `/${id}`, query: { category: category }});
};

你可以通过useRouter在你的[id].js上使用它

import { useRouter } from 'next/router'

function PostPage() {
    const category = router.query.category // <--- category here
  
    return (
      <>
        
      </>
    );
}
  
export default PostPage;

【讨论】:

  • 我做了以下router.push(/${id}`, { query: { category: category } });但现在它不再重定向到页面了。类别显示在 url 中,但用于重定向的 ID 不再出现
  • @Laspeed 很抱歉我更新了答案,您应该传递给router.push 的数据必须是对象。
【解决方案2】:

您可以将其作为查询参数传递,然后从 url 获取参数

 router.push(`/${id}?props=${category}`)

喜欢这个

【讨论】:

    【解决方案3】:

    您可以在查询字符串参数中传递类别。 然后在您的组件中,您可以通过 router.query 读取它

    【讨论】:

    • 你能举个例子或类似的参考吗?
    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2020-09-07
    • 2021-02-18
    • 2022-01-24
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多