如何在 NEXT JS 中的路由之间传递状态?

Uma*_*bas 2 javascript node.js reactjs next.js

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

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

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

 const {query} = useRouter()
Run Code Online (Sandbox Code Playgroud)

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

我是 Next.js 的新手,因此我们将非常感谢任何帮助。

Dre*_*ese 10

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

路由器推送

router.push(url, as, options)
Run Code Online (Sandbox Code Playgroud)

as- 将在浏览器中显示的 URL 的可选装饰器。

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

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

  • `as` 需要传入 `router.push` 中的第二个参数,而不是 URL 对象内部。 (2认同)