我正在构建一个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
的方法太昂贵了。
2条答案
按热度按时间t3psigkw1#
从DB中删除项目后,您可以尝试更新本地数据,而不是从服务器中获取数据
p1tboqfb2#
我在过去使用过这种方法,就像你说的,这可能是一个昂贵的方法,但它保持路由没有'下一个路由器'相比,移动部分路由到
window.location
。Next路由器也有一个可以调用的reload函数,但是它仍然使用了路由后的原则。