the*_*ewb 100 typescript reactjs next.js next-router
使用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 的上下文”。
小智 251
从页面目录迁移:
usePathname()useSearchParams()
当前不支持。这是解决方案:https://beta.nextjs.org/docs/api-reference/use-router
Ndi*_*tah 42
NEXT.js 13更改了 useRouter 的包。
'use client';
import { useRouter } from 'next/navigation';
export default function Page() {
const router = useRouter();
return (
<button type="button" onClick={() => router.push('/dashboard')}>
Dashboard
</button>
);
}
Run Code Online (Sandbox Code Playgroud)
Yil*_*maz 21
import { useRouter } from "next/router";
Run Code Online (Sandbox Code Playgroud)
这在页面目录页面中仍然有效
应用程序目录 客户端
'use client';
// this works in pages directory as well
import { useRouter } from 'next/navigation';
Run Code Online (Sandbox Code Playgroud)
如果您 import { useRouter } from "next/router"在此目录中使用,您会收到“错误:NextRouter 未安装”
小智 11
对于下一个 13 版本:
'use client';
import { useRouter } from 'next/navigation';
//对于以前的版本:
'use client';
import { useRouter } from 'next/router';
Art*_*hle 10
你不知道我在最简单的任务上花费了多少时间,比如获取我的 url 文件(应用程序目录)的动态部分watch/[videoId]/page.tsx。
useRouter会给我:
"use client";)useNavigation没有有关查询/动态路径/路径的信息。
usePathname感觉很搞笑,然后我必须自己分割路径(我一直在这样做,直到我明白如何正确地做到这一点。
useSearchParams为空:
不过很高兴 .split()'ing
\/\/3 LL co /\/\ e到血腥的边缘...
正如其他人指出的那样,现在是:
import { usePathname } from 'next/navigation';
const pathname = usePathname();
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多内容
| 归档时间: |
|
| 查看次数: |
139399 次 |
| 最近记录: |