如何仅将React与功能组件和挂钩一起使用?

时间:2020-08-10 03:38:09

标签: javascript reactjs class components react-hooks

拥有一个React项目,其中一些组件以Class风格编写,而其他组件则以Hooks风格编写,这使新来者感到困惑,并且更难以重用常见的逻辑。有没有办法,例如:

  • Preact,Inferno等替代库,它与React兼容,但仅支持钩子
  • 或ESLint功能可在有人尝试创建React类组件时发出警告
  • ...

防止开发人员编写Class组件,因为我希望我的React项目中的所有组件都是仅带有钩子的功能组件。

2 个答案:

答案 0 :(得分:1)

使用eslint的react插件https://www.npmjs.com/package/eslint-plugin-react并在eslint配置中将react/prefer-stateless-function设置为true

答案 1 :(得分:1)

我还想要一个 lint 规则来完成这个,所以我写了 eslint-plugin-react-prefer-function-component

唯一不能编写为函数组件的组件是那些实现了 componentDidCatch 的组件,因此默认情况下允许实现该方法的组件。此选项是可配置的。

eslint-plugin-react/prefer-stateless-function(在其他答案中提到)允许具有状态或实现任何类方法的类组件。