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

Next.js+TypeScript遇ESLint错误:函数组件非函数声明

解决Next.js TypeScript中ESLint的react/function-component-definition错误

你遇到的错误来自ESLint的react/function-component-definition规则,这个规则默认强制要求函数组件必须以函数声明的形式定义,同时你第二次尝试的写法还存在类型使用错误。下面是具体的解决方法:

方法1:改用符合规则的函数声明写法

直接用函数声明,并正确给函数添加NextPage类型注解:

import type { NextPage } from "next";

export default function Home(): NextPage {
  return (
    <div>Home</div>
  );
}

方法2:修改ESLint规则,允许箭头函数写法

如果你更习惯用箭头函数,可以调整ESLint配置,放宽这个规则的限制。找到你的ESLint配置文件(比如.eslintrc.json、.eslintrc.js),添加或修改react/function-component-definition规则:

{
  "rules": {
    "react/function-component-definition": [
      "error",
      {
        "namedComponents": "arrow-function",
        "unnamedComponents": "arrow-function"
      }
    ]
  }
}

修改后,你最初的箭头函数写法就能正常通过ESLint检查了:

import type { NextPage } from "next";

const Home: NextPage = () => {
  return (
    <div>Home</div>
  );
};

export default Home;

关于你第二次尝试写法的问题

你写的export default function Home<NextPage> ()是错误的——这里的<NextPage>是把NextPage当作泛型参数名,而不是用NextPage类型来注解组件的返回值,这完全不符合TypeScript的类型使用规范,所以才会持续报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:10:34