2016-11-21 8 views
3

私は、ReactJSコンポーネント上に、nullまたは不変のマップのいずれかの小道具を持っています。私のウィジェットの下部にReactJSでnull prop typeを指定する方法は?

私が書く場合:

MyComponent.propTypes = { 
    myMap: React.PropTypes.instanceOf(Immutable.Map) 
}; 

私がヌル、未定義、またはマップであることの可能性に開かれ、これを残しています。

これを必須にし、タイプをnullまたはマップのみにするにはどうすればよいですか?

https://facebook.github.io/react/docs/typechecking-with-proptypes.html

私はこの例を参照してくださいが、私は私のニーズに構文を調整する方法がわからないか、それも可能である場合。

編集: プロパティがnullの場合、まだ存在しますが、未定義とは完全には含まれていないことを意味します。例えば

<Component id={1} data={null} /> 
<Component id={2} data={Immutable.Map()} /> 
<Component id={3} /> 
+0

プロパティには表示されていないか、nullになっていますか? – mfirry

答えて

2

この要件が反応の現在のバージョンでサポートされていないようです。

詳細はReact issue #2166を参照してください。この問題では、isRequiredに加えてisRequiredOrNullプロパティの可能性についても説明します。 Bottom line

私はPropTypeにさらなる変更があるとは思わないでしょう。最近、フローはますます成熟し、Reactチームから聞いたことから、タイプチェックの長期的な解決策です。これにより、PropTypeは、createClassやReactアドオンのような優先順位の点で同じ「互換性」バケットに置かれますが、サポートされていますが、バグフィックスやパフォーマンスの改善、新しい機能の追加やAPIの変更はありません。言い換えれば

あなたはより洗練された型チェックが必要な場合は、代わりにFlowを使用しています。