【问题标题】:How to pass state between routes in NEXT JS?如何在 NEXT JS 中的路由之间传递状态?
【发布时间】:2021-06-05 09:17:30
【问题描述】:

我的页面中的对象中有一个数据。我想从该页面重定向到另一个页面以及如下代码中的数据

const redirectAppointmentStep1 = (value) => {
    router.push({
      pathname: '/Appointment/bookingstep1',
      query: {value : value},
    })
  }

我在bookingstep1 页面中收到了这样的数据

 const {query} = useRouter()

但问题是查询出现在 url 上并且 url 看起来不干净。如何将数据从一个页面发送到另一个页面但不显示在 url 上?

我是 Next.js 的新手,因此我们将不胜感激。

【问题讨论】:

    标签: javascript node.js reactjs next.js


    【解决方案1】:

    如果您想发送“路由状态”,您必须通过查询字符串来完成,但实际上您可以通过 as 属性“屏蔽”浏览器中显示的路径。

    Router.push

    router.push(url, as, options)
    

    as - 将在 浏览器。

    您可以修饰 URL 以匹配路径名。

    const redirectAppointmentStep1 = (value) => {
      router.push(
        {
          pathname: '/Appointment/bookingstep1',
          query: {value : value},
        },
        '/Appointment/bookingstep1', // "as" argument
      )
    }
    

    【讨论】:

    • 感谢您的帮助,但我的 url 仍然像这样 localhost:3010/Appointment/bookingstep1?value=child+specialist 是不是 url 只能这样显示-> localhost:3010/Appointment/bookingstep1
    • as 需要在router.push 的第二个参数中传递,而不是在 URL 对象内部。
    • @juliomalves 谢谢,我想知道这一点,因为文档在两个用法签名之间的语法和可用属性上有点模棱两可。
    • @DrewReese,你的方法运行良好,但我现在遇到一个问题,一旦我刷新页面,查询中的数据就会消失。你能帮我解决这个问题吗?我将不胜感激
    • @UmarAbbas 是的,不幸的是,“路由状态”仅在路由转换期间持续存在。您将希望将其持久化到接收组件中,例如,从 localStorage 持久化/初始化到本地组件状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2021-03-07
    • 2018-06-06
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多