如何检查useRouter是否可以在nextjs应用程序中使用router.back()


  • 我正在为我的应用程序使用next-js,并且在路由到应用程序的上一个路由时遇到了一些问题。我知道有一个类似router.back()的函数,但我不知道是否可以从当前页面返回
  • 我读到我们可以检查history.action !== 'POP',但现在我检查在使用console.log(history(时历史记录没有操作属性

我正在使用next/router。

太晚了,对下一个人来说用处不大:如果我读对了你的问题,你想知道导航堆栈中是否有你可以导航回的东西,如果没有历史记录,你想做其他事情。

您可以使用window.history.state进行浏览;尽管它没有给你对历史堆栈的清晰访问,但该状态有一个";idx";属性,该属性在将位置添加到历史堆栈时递增。这意味着,如果window.history.state.idx为零,则历史堆栈中没有任何内容,如果它大于零,则在历史堆栈中有一些内容,您可以导航返回。

如果可以的话,可以导航回来,如果不行,可以做其他事情的例子:

if (window.history.state && window.history.state.idx > 0) {
router.back();
} else {
// Do something else              
}

最新更新