两个选择。
暂时禁用警告
(未经测试;有多种方法可以做到这一点。)
// eslint-disable-next-line react/prefer-stateless-function
export class myComponent extends React.Component {
...
}
使用纯无状态组件
返回值是要渲染的内容(例如,您基本上是在编写基于类的组件的render 方法:
export const myComponent = () => {
return (
// JSX here
)
}
(如果你喜欢,也可以使用非 ES6 符号。)
对于像这样没有其他支持逻辑的组件,我更喜欢隐式返回,例如,
export MyComponent = () =>
<div>
// Stuff here
</div>
这是一个偏好问题。不过,我会说你应该遵循 React 命名约定,并保持所有组件以大写字母开头。
ESLint 可能会抱怨多行 JSX 表达式周围缺少括号,因此请禁用该规则或使用括号。
如果你需要 props,它们会作为函数的参数传入:
const MyComponent = (props) =>
<div>
<Something someProp={props.foo} />
</div>
export MyComponent
为了方便,你可以像往常一样在参数中解构:
const MyComponent = ({ foo }) =>
<div>
<Something someProp={foo} />
</div>
如果您使用本地变量,这可以使隐式返回更容易一些。除非您声明它们,否则您将收到关于缺少 PropTypes 的 ESLint 警告;因为它不是一个类,你不能简单地在类中使用static propTypes,它们必须附加到函数(无论如何很多人都喜欢)。