如何正确地将propTypes添加到ES6中的React组件?

时间:2016-01-30 00:08:00

标签: reactjs

我正在将我的React组件编写为ES6类。我试图添加propTypes,Meteor抛出此错误A semicolon is required after a class property。这是我的组成部分:

class MainLayout extends Component {
  propTypes: {
    content: React.PropTypes.element
  }

  componentDidMount () {
    $(window).load(() => {
      $('.flexslider')
      .flexslider(
        { animation: 'fade', animationSpeed: 1500, controlNav: false }
      );
    });
  }

  render () {
    return (
      <div>
        <Header/>
        {/* Content */}
        { this.props.content }
      </div>
    );
  }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

使用es6类synax,您无法在类定义中的类上设置静态属性。

基本上,而不是

class MainLayout extends Component {
  propTypes: {
    content: React.PropTypes.element
  }
  ..
}

应该是

class MainLayout extends Component {
  ...
}

MainLayout.propTypes = {
  content: React.PropTypes.element
}

使用es7类,您可以定义这样的proptypes,但这更符合您的期望:

class MainLayout extends Component {
  static propTypes = {
    content: React.PropTypes.element
  }
  ..
}