ES6 classを使ってReactのComponentを書こうとすると、PropTypesを定義するのにコンストラクタのプロパティにしろとか、Property Initializersを使えとか言われているけど( https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html )、どうもしっくりこないのでDecoratorを使って定義できるライブラリを書きました。
https://github.com/popkirby/react-props-decorators
コード例
import React from 'react';
import { propTypes, defaultProps } from 'react-props-decorators';
@propTypes({
foo: React.PropTypes.string,
bar: React.PropTypes.number
})
@defaultProps({
foo: "defaultString",
bar: 100
})
class Baz extends React.Component {
/* ... */
}
もともとのpropTypesなどの中身をDecoratorに持ってくるだけです。