React项目中的一些组件是用class风格编写的,而另一些组件则用Hooks风格编写,这会让新来者感到困惑,更难重用公共逻辑。有没有办法,例如:
- Preact、Inferno、,。。。与React兼容,但仅支持挂钩
- 或者ESLint功能,每当有人试图创建React类组件时都会发出警告
以防止我的开发人员编写Class组件,因为我希望React项目中的所有组件都是只带钩子的功能组件。
我还想要一个lint规则来实现这一点,所以我编写了eslint插件react preferred函数组件。
唯一不能作为函数组件编写的组件是那些实现componentDidCatch
的组件,因此默认情况下允许实现该方法的组件。此选项是可配置的。
eslint-plugin-react/preference无状态函数(在其他答案中提到(允许具有状态或实现任何类方法的类组件。
使用esint的react插件https://www.npmjs.com/package/eslint-plugin-react并在eslint配置中将react/prefer-stateless-function
设置为true