相关疑难解决方法(0)

NextRouter 未安装 Next.JS

使用import { useRouter } from "next/router";asimport { useRouter } from "next/navigation";会抛出“'{ pathname: string; query: { search: string; }; }' 类型的参数不可分配给 'string' 类型的参数。”

    const router = useRouter();
    const [searchInput, setSearchInput] = useState("");

    const search = (e) => {
                router.push({
                    pathname: '/search',
                    query: {
                        search: searchInput,
                    },
                })
    }
Run Code Online (Sandbox Code Playgroud)

NextJS文档

Froms 文档:“组件在 Next.js 应用程序之外使用了 useRouter,或者在 Next.js 应用程序之外呈现。在对使用 useRouter 挂钩的组件进行单元测试时可能会发生这种情况,因为它们没有配置 Next.js 的上下文”。

typescript reactjs next.js next-router

100
推荐指数
6
解决办法
14万
查看次数

获取 URL 参数 (Next.js 13)

我正在使用该目录构建 Next.js 13 项目/app。我有一个问题 - 在根布局中,我有一个永久的导航栏组件,该组件是从/components/Navbar.jsx. 基本上在 内部Navbar.jsx,我希望能够访问 url 中的 slug 参数,例如:localhost:3000/:slug我想要其中的 slug id。我已经为该 slug 定义了 Next.js 13 page.jsx。但是如何获取导航栏组件中的 slug id。我也不想使用,window.location.pathname因为当页面路由到不同的 slug 时它不会改变,并且仅在我刷新时才会改变。

我尝试过旧的 Next.js 12 方法:

//components/navbar.jsx;

import { useRouter } from "next/navigation";

export default function Navbar () {
  const router = useRouter();
  const { slug } = router.query;

  useEffect(() => {
    console.log(slug);
  }, []);

  return <p>Slug: {slug}</p>
}
Run Code Online (Sandbox Code Playgroud)

然而它不起作用。

url reactjs next.js

30
推荐指数
6
解决办法
8万
查看次数

标签 统计

next.js ×2

reactjs ×2

next-router ×1

typescript ×1

url ×1