typescript Next.js:router.push不刷新页面

bihw5rsg  于 2023-01-27  发布在  TypeScript
关注(0)|答案(2)|浏览(268)

我正在构建一个next.js页面/page/data/[dataId](当用户单击页面/page/data中的链接时,将导航此页面,我通过API获取项目列表)。
当用户点击一个按钮,我调用一个API从数据库中删除这个项目。一旦API调用成功。我需要重定向用户回到/page/data页面。以下是我如何做的:

async function removeData(){

    // ... some logic

    await removeData({input});
    setTimeout(()=>{
          router.push("/page/data"); // redirecting to parent
     },2000)

}

用户重定向回/page/data/后,我需要刷新数据项列表,因为我想删除已删除的项。现在的问题是-/page/data/router.push中导航后没有刷新。
我知道我们可以通过将router.push替换为window.location="/page/data"来实现这一点,但这是非常昂贵的方式。
我也试过:

router.push("/page/data",undefined,{shallow:false})

但没有成功。
任何人都可以帮助我,我们如何才能实现这一最佳的方式?我发现window.location的方法太昂贵了。

t3psigkw

t3psigkw1#

从DB中删除项目后,您可以尝试更新本地数据,而不是从服务器中获取数据

p1tboqfb

p1tboqfb2#

我在过去使用过这种方法,就像你说的,这可能是一个昂贵的方法,但它保持路由没有'下一个路由器'相比,移动部分路由到window.location

router.push('ROUTE').then(() => window.location.reload())

Next路由器也有一个可以调用的reload函数,但是它仍然使用了路由后的原则。

router.push('ROUTE').then(() => router.reload())

相关问题