次のコードを仮定します最初に働いた場合。しかし、二度と真実を返すことはありません。私はそれを以下の構文に変更しようとしましたが、それは役に立たなかった。コンポーネントのpropTypesを反応させるの定義の種類
if (TestComponent.propTypes.myEnum === React.PropTypes.oneOf(['News', 'Photos'])) {...}
したがって、問題は次のとおりです。どのようなメカニズムが小道具の種類を発見するためにありますか? 私はReactがそれを検証するpropTypeに対するpropの値をテストすることを知っています。しかし、私は私のものをするためにも '期待されたタイプ'へのアクセスが必要です。
ところで、ここでは(簡潔にするために短縮)propTypesを検証リアクトコードからの抜粋です:あなたは外側の関数のパラメータがexpectedTypeで見ることができるように
function createPrimitiveTypeChecker(expectedType) {
function validate(props, propName, componentName, location, propFullName){
var propValue = props[propName];
var propType = getPropType(propValue);
if (propType !== expectedType) {
// return some Error
}
return null;
}
return createChainableTypeChecker(validate);
}
。内部の検証関数(if(propType!== expectedType))で使用されます。しかし、ReactはexpectedTypeをメンバ変数に保存しないので、外部コードからアクセスすることができます。だから、どのように外のコードpropypeの型を把握するのですか?
私の指摘は、小道具の特定の値を '検証'することではありません。それはReactによって非常にうまく処理されます。私のポイントは、など
任意の考え、提案、私はanyOf、objectOf、形状などの種類とに得ることができない小道具の種類に応じて、いくつかの固有のロジックを、行うことです?
説明を参照してください。 これを修正する機能リクエストとPRがあります。こちらをご覧ください。+1:https://github.com/facebook/react/issues/8310 – VladFr