Я использую настройки eslint airbnb, которые имеют правило, которое заставляет компоненты реакции без состояния быть переписанными как чистая функция. Следующий компонент запускает это правило, а это означает, что компонент ниже лучше было бы написать как чистую функцию:
import React from 'react';
import { observer } from 'mobx-react';
import cssmodules from 'react-css-modules';
import styles from './index.css';
import Select from '../Select/';
import List from '../List/';
@cssmodules(styles)
@observer
export default class Analysis extends React.Component {
render() {
return (
<div styleName="wrapper">
<div styleName="column">
<Select store={this.props.store} />
</div>
<div styleName="column">
<List store={this.props.store} />
</div>
</div>
);
}
}
Analysis.propTypes = {
store: React.PropTypes.object.isRequired,
};
Однако, когда я переписываю ее как чистую функцию (см. ниже), я получаю сообщение об ошибке Leading decorators must be attached to a class declaration
:
import React from 'react';
import { observer } from 'mobx-react';
import cssmodules from 'react-css-modules';
import styles from './index.css';
import Select from '../Select/';
import List from '../List/';
@cssmodules(styles)
@observer
function Analysis(props) {
return (
<div styleName="wrapper">
<div styleName="column">
<Select store={props.store} />
</div>
<div styleName="column">
<List store={props.store} />
</div>
</div>
);
}
Analysis.propTypes = {
store: React.PropTypes.object.isRequired,
};
Так могу ли я написать его как чистый компонент и при этом прикрепить декораторы? Или это ошибка в правилах линтинга airbnb и невозможно выполнить оба правила?