【发布时间】:2017-01-22 03:04:49
【问题描述】:
我正在使用具有a rule that enforces stateless react components to be rewritten as a pure function 的airbnb eslint 设置。下面的组件触发了这个规则,这意味着下面的组件最好写成纯函数:
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 linting规则中的错误,不可能同时满足这两个规则?
【问题讨论】:
标签: javascript reactjs airbnb-js-styleguide