You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js添加'use client'仍报错,如何避免父组件转客户端组件?

解决Next.js中useRouter在客户端组件的报错问题

你的核心问题是"use client"指令的写法错误,导致Next.js无法正确识别该组件为客户端组件,进而引发useRouter的使用报错。

关键修正步骤

  • 移除"use client"后面的空格,确保指令为"use client";(空格会破坏指令的识别逻辑,组件仍会被默认当作服务器组件)
  • 无需修改父组件,Next.js允许服务器组件直接嵌套客户端组件,只要当前组件正确标记为客户端组件即可

修正后的完整代码:

"use client";
import { useRouter } from 'next/navigation'

export const NavBar = () => {
  const router = useRouter()

  return (
    <div className='fixed inset-x-0 top-0 h-20 bg-gray-900 flex items-center justify-between px-10'>
        <div></div>
        <div>
            <button
                onClick={() => router.push('/api/auth/signin')}
                className='bg-blue-500 text-white px-4 py-2 rounded-md'>
                Login
            </button>
        </div>
    </div>
  )
}

额外验证点

  • 确认你的Next.js版本为13.4及以上(App Router模式下"use client"指令才正式生效)
  • 父组件中直接导入该NavBar组件即可,不需要添加额外的客户端标记

内容的提问来源于stack exchange,提问作者vishwas babar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:12:08