首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NextRouter没有挂载Next.JS

NextRouter没有挂载Next.JS
EN

Stack Overflow用户
提问于 2022-11-13 13:17:36
回答 4查看 1.2K关注 0票数 5

使用import { useRouter } from "next/router";作为import { useRouter } from "next/navigation";抛出“类型的参数”{路径名:字符串;查询:{搜索:字符串;}“不能分配给‘string’类型的参数。”

代码语言:javascript
复制
    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的上下文进行配置。”

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-11-18 17:07:27

从页面目录迁移:

  • 新的useRouter钩子应该从next/导航而不是next/路由器导入
  • 路径名字符串已被删除,并被usePathname()替换。
  • 查询对象已被删除,目前不支持由useSearchParams() router.events替换的查询对象。

以下是解决方案:https://beta.nextjs.org/docs/api-reference/use-router

票数 15
EN

Stack Overflow用户

发布于 2022-11-13 13:25:23

代码语言:javascript
复制
const router = useRouter();

const search = (e) => {
          const searchParams = {
                pathname: '/search',
                query: {
                    search: e.target.value,
              },
          } as any
           router.push(searchParams)
}
票数 0
EN

Stack Overflow用户

发布于 2022-11-13 17:40:06

现在,Nextjs默认安装Next@13。如果您从Nextjs@12开始,最近重新安装了软件包,您必须删除Nextjs@12之后才能安装低于13的版本。我不知道为什么,但对我来说,这才是起作用的原因。

代码语言:javascript
复制
npm uninstall next

npm install next@12.2.0

注意事项:只需确保下一个版本低于13

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74421327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档