使用import { useRouter } from "next/router";作为import { useRouter } from "next/navigation";抛出“类型的参数”{路径名:字符串;查询:{搜索:字符串;}“不能分配给‘string’类型的参数。”
const router = useRouter();
const [searchInput, setSearchInput] = useState("");
const search = (e) => {
router.push({
pathname: '/search',
query: {
search: searchInput,
},
})
}NextJS 文档
Froms docs:“组件在Next.js应用程序之外使用Next.js,或者在Next.js应用程序之外呈现。这可能发生在对使用useRouter钩子的组件进行单元测试时,因为它们没有使用Next.js的上下文进行配置。”
发布于 2022-11-18 17:07:27
从页面目录迁移:
usePathname()替换。useSearchParams() router.events替换的查询对象。以下是解决方案:https://beta.nextjs.org/docs/api-reference/use-router
发布于 2022-11-13 13:25:23
const router = useRouter();
const search = (e) => {
const searchParams = {
pathname: '/search',
query: {
search: e.target.value,
},
} as any
router.push(searchParams)
}发布于 2022-11-13 17:40:06
现在,Nextjs默认安装Next@13。如果您从Nextjs@12开始,最近重新安装了软件包,您必须删除Nextjs@12之后才能安装低于13的版本。我不知道为什么,但对我来说,这才是起作用的原因。
npm uninstall next
npm install next@12.2.0注意事项:只需确保下一个版本低于13
https://stackoverflow.com/questions/74421327
复制相似问题