Reactjs 如何在ES6中正确地向React组件添加propTypes?

Reactjs 如何在ES6中正确地向React组件添加propTypes?,reactjs,Reactjs,我正在以ES6类的形式编写React组件。我试图添加propTypes,Meteor抛出了这个错误类属性后需要分号。以下是我的组件: class MainLayout extends Component { propTypes: { content: React.PropTypes.element } componentDidMount () { $(window).load(() => { $('.flexslider') .flex

我正在以ES6类的形式编写React组件。我试图添加
propTypes
,Meteor抛出了这个错误
类属性后需要分号。以下是我的组件:

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>
    );
  }
}
class MainLayout扩展组件{
道具类型:{
内容:React.PropTypes.element
}
组件安装(){
$(窗口)。加载(()=>{
$(“.flexslider”)
.柔性滑块(
{动画:“淡入淡出”,动画速度:1500,控制导航:false}
);
});
}
渲染(){
返回(
{/*内容*/}
{this.props.content}
);
}
}

如何解决此问题?

使用es6 class synax,您不能在类定义中设置类的静态属性

因此,基本上

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

class MainLayout extends Component {
  ...
}

MainLayout.propTypes = {
  content: React.PropTypes.element
}
然而,使用es7类,您可以像这样定义proptype,这更符合您的期望:

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

非常感谢!但是,如果我在类定义中将其定义为一个静态函数,比如
static propTypes(){return{content:React.propTypes.element,};}
,我怀疑它会抛出一个错误,因为
propTypes
需要是一个刚刚尝试过的对象,并且它实际工作了。但不确定这是不是正确的方法做了更多的测试。。。它不会抛出任何错误,但不起作用。不会进行验证。。。您的方法工作得很好:-)在类中,
static get propTypes(){return{…}
为我工作。