reactjs 浅路由在nextjs中不按预期工作

csbfibhn  于 2023-04-11  发布在  React
关注(0)|答案(1)|浏览(106)

我尝试在不重新加载页面的情况下使用router.push更改查询参数。我尝试按照nextjs文档的建议使用浅路由,但它不像预期的那样工作。应该注意的是,我使用的是动态路由。所以我的URL看起来像这样

http://localhost:3000/category/865/940/940?parentId=940

由于它是动态的,slug url看起来像这样

http://localhost:3000/category/[category]/[subCategory]/[productCat]?parentId=940

现在,当我尝试浅路由时,它添加了查询参数,但我的url变成了这样:

http://localhost:3000/category/[category]/[subCategory]/[productCat]?parentId=940&price=333

应该是这样的:

http://localhost:3000/category/865/940/940?parentId=940&price=333

我根据nextjs文档使用了shallow,例如:router.push("&price=sdds", undefined, { shallow: true,})
但它给了我一个奇怪的网址和刷新页面。

jv4diomz

jv4diomz1#

router.push的用法对我来说似乎不正确。从文档中,语法是:-
router.push(url, as, options)
但是您将其用作router.push("&price=sdds", undefined, { shallow: true,}),而不是传递url
你可以尝试下面的语法来添加新的查询参数到你现有的url(根据文档,router.push的第一个参数也可以是一个对象):

const newQuery = {
  ...router.query,
  price: newPrice,
};

router.push(
  {
    pathname: router.pathname,
    query: newQuery,
  },
  undefined,
  { shallow: true }
);

相关问题