前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React报错之Unexpected default export of anonymous function

React报错之Unexpected default export of anonymous function

作者头像
chuckQu
发布2022-08-19 16:45:55
5370
发布2022-08-19 16:45:55
举报
文章被收录于专栏:前端F2E

正文从这开始~

总览

当我们尝试使用默认导出来导出一个匿名函数时,会导致"Unexpected default export of anonymous function"警告。为了解决该错误,在导出函数之前,为函数赋予一个名称。

unexpected-default-export-of-anonymous-function.png

这里有个例子来展示警告是如何发生的。

代码语言:javascript
复制
// Header.js

// 👇️ default export for anonymous function

// ⛔️ Unexpected default export of anonymous function
// eslint import/no-anonymous-default-export
export default function () {
  return <h1>hello world</h1>;
}

上述代码的问题在于,我们使用默认导出来导出一个匿名函数。

命名

为了解决该错误,在导出函数之前,为函数赋予一个名称。

代码语言:javascript
复制
// Header.js

// 👇️ give name to function that's being exported
export default function Header() {
  return <h1>hello world</h1>;
}

「很重要」:如果你要导出一个变量(或一个箭头函数)来作为默认导出,你必须在一行中声明它,在下一行中导出它。你不能在同一行中声明和默认导出一个变量。

代码语言:javascript
复制
// Header.js
const Header = () => {
  return <h1>hello world</h1>;
};

export default Header;

现在你仍然能够使用默认导入来导入函数。

代码语言:javascript
复制
// App.js
import Header from './Header';

const App = () => (
  <div>
    <Header />
  </div>
);

export default App;

这种方法鼓励在导出函数和导入函数时重复使用同一个标识符。

默认情况下,eslint规则会警告我们所有类型的匿名默认导出,例如数组、函数、类、对象等等。

注释单行规则

如果你想禁用单行的规则,你可以使用注释。

代码语言:javascript
复制
// Header.js

// eslint-disable-next-line import/no-anonymous-default-export
export default function () {
  return <h1>hello world</h1>;
}

注释应该放在带有匿名默认导出的代码的正上方。

或者,你可以在.eslintrc文件中,更新import/no-anonymous-default-export应该检查的内容。

Github仓库的选项[3]部分展示了该规则的完整默认配置,你可以在你的.eslintrc文件的规则对象中进行调整。

总结

为了解决该警告,要么为默认导出函数进行命名,要么使用eslint单行注释放过该行代码。

参考资料

[1]

https://bobbyhadz.com/blog/react-unexpected-default-export-of-anonymous-function: https://bobbyhadz.com/blog/react-unexpected-default-export-of-anonymous-function

[2]

Borislav Hadzhiev: https://bobbyhadz.com/about

[3]

选项: https://github.com/import-js/eslint-plugin-import/blob/v2.25.4/docs/rules/no-anonymous-default-export.md#options

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端F2E 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总览
  • 命名
  • 注释单行规则
  • 总结
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档