Next.js 13个路由器方法不存在,如何在路由时引起状态变化

mftmpeh8  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(121)

以前存在于next/router中的方法似乎不适用于next 13(最新)。如果我使用next/router中的任何内容,我会遇到安装问题,因此建议根据文档使用next/navigation。
https://nextjs.org/docs/messages/next-router-not-mounted
next/navigation没有next router的所有功能,即使我别名next/router,我仍然不能使用它的任何安装问题。
我只是试图关闭一个组件,当我导航到应用程序中的另一个页面时,它会呈现一个div,但侦听器或历史记录或events.on/events.off似乎不起作用。
我已经在不同的地方将状态设置为false,它只是一个显示/隐藏布尔值,但我不能在导航时隐藏。
另一个不存在于next/navigation中的方法的例子。

useRouter().onBeforeUnmount(() => {
  handleRouteChange();
});

字符串
如果你能帮忙的话,我将不胜感激。
这是一个类似的问题,但这是过时的,不与最新的下一个工作,因为我不能使用下一个/路由器?改变状态的路由更改Next.js

axr492tv

axr492tv1#

next/router中的路由器没有在app目录中初始化,正如您自己已经注意到的那样。

"use client";

import { useEffect } from "react";
import { usePathname } from "next/navigation";

interface Props {
  onChange: (pathname: string) => void;
}

export default function PathTracker({ onChange }: Props) {
  const pathname = usePathname();
  useEffect(() => onChange(pathname), [pathname]);
  return <></>;
}

字符串
正如我在上面提供的示例中所看到的,您可以使用usePathname钩子来确定当前路径中的任何更改。

相关问题