web-dev-qa-db-ja.com

反応:なぜ静的propTypes

redux todomvcコード を探しています。 static propTypesstaticキーワードとは何ですか?ありがとう

[〜#〜] update [〜#〜]

なぜダウン投票したのか分かりませんか?この投稿は単純すぎますか?コメントを歓迎します。ありがとう。この投稿を削除できるといいのですが。

45
BAE

staticはJavascriptの最後の世代( "ES5")の一部ではなかったため、古いドキュメントにはありません。ただし、Internet Explorer( http://caniuse.com/#search=es6 )を除くすべての主要なブラウザーで、および「ES6」クラスの残りの構文がサポートされるようになりました。 Babelのようなトランスパイラーは、どのブラウザーでも使用できます。ほとんどのReactユーザーは既にBabelを使用してJSXを変換しているため、Reactサイト(Redux TodoMVCなど)は当然のことと考えています。 staticの詳細については、こちらをご覧ください https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static

static propTypesの場合、propTypesはクラスのインスタンスではなく、クラス自体で宣言する必要があります。つまり、ステートレスコンポーネントを使用する場合:

function Foo() { 
    this.PropTypes = somePropTypes; // bad
    return <div></div>;
}
Foo.PropTypes = somePropTypes; // good

ES6クラスを使用する場合、Foo.PropTypes = somePropTypesに相当するものは次のとおりです。

class Foo extends React.Component {
    static PropTypes = somePropTypes;
}

サイドノートとして、そのようなクラスのプロパティを定義する機能はどのブラウザにも存在しません(まだ):transform-class-propertiesプラグインを備えたBabelなどのトランスパイラーが必要です。

35
machineghost

propTypesは、コンポーネントのインスタンスに固有ではありません。また、コンポーネントごとに変更されることもありません。したがって、クラスの静的メンバーであることが理にかなっています。

12
Justin Niessner