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

Next.js/React组件onClick函数失效求助(next-auth场景)

问题解决:Next-Auth登录/登出按钮onClick失效

问题根源

你的登录、登出按钮组件中,onClick事件只是引用了函数,没有调用函数,导致点击时没有执行对应的登录/登出逻辑,这就是控制台无日志、按钮失效的核心原因。

修复后的代码

登录/登出按钮组件修改:

"use client";

import { signIn, signOut } from "next-auth/react";

async function login() {
  await signIn("credentials", { callbackUrl: "/admin" }).catch(console.error);
}

async function logout() {
  await signOut({ callbackUrl: "/" }).catch(console.error);
}

export function LoginButton() {
  // 修正方式1:箭头函数内调用login函数
  return <button onClick={() => login()}>Sign In</button>;
  // 或者修正方式2:直接传递函数引用(更简洁)
  // return <button onClick={login}>Sign In</button>;
}

export function LogOutButton() {
  // 修正方式1:箭头函数内调用logout函数
  return <button onClick={() => logout()}>Sign Out</button>;
  // 或者修正方式2:直接传递函数引用(更简洁)
  // return <button onClick={logout}>Sign Out</button>;
}

补充说明

  • 原代码中() => login是一个返回login函数的箭头函数,但没有执行它,所以点击按钮时不会触发任何操作。
  • 两种修正方式都可行:
    1. 箭头函数内调用函数:适合需要额外传参的场景。
    2. 直接传递函数引用:更简洁,适合无额外参数的情况。
  • 你的Header组件逻辑没有问题,它只是根据服务端会话渲染对应的按钮组件,无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:05:03