首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将带有装饰器的function组件重写为纯函数?

如何将带有装饰器的function组件重写为纯函数?
EN

Stack Overflow用户
提问于 2016-09-14 10:32:12
回答 1查看 10.9K关注 0票数 10

我正在使用airbnb设置,它有强制无状态反应组件被重写为纯函数的规则。。以下组件触发此规则,这意味着下面的组件将更好地编写为纯函数:

代码语言:javascript
复制
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的错误

代码语言:javascript
复制
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衬里规则中的一个错误,并且不可能同时满足这两种规则吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 10:49:18

好的,所以问题是es7风格的装饰器。他们解决了这个问题:

代码语言:javascript
复制
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/';

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,
};

export default cssmodules(observer(Analysis), styles);

它不漂亮,但它确实有效,也不会触发任何错误。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39488212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档