2017-04-12 6 views
1

HOCを作成するときに、どのような種類のコンポーネントがラップされるのかわからない場合があります。別のReactコンポーネント、時には平文DOMエレメントliおよびaです。Dom要素またはReactコンポーネントのチェック方法

WrappedComp = myHOC(BaseComponent) 

MyHOCは、ラップのコンポーネントに余分な小道具を通過し、ほとんどの場合、これはそれが必要として動作します。 https://facebook.github.io/react/warnings/unknown-prop.html

それでは、どのように私がチェックできる:

しかしBaseComponentは、例えばliあるときに、時にはそれが余分な小道具を受け入れて、反応しないが、DOM要素が非標準のDOM属性を受け入れないという警告Unkown Prop WarningがスローされますBaseComponentがDOM要素かどうか? 私はそれに余分な小道具を渡すことはありません。

これを行うより良い方法はありますか?

+0

'console.log(BaseComponent)'の出力を確認しましたか? –

+0

なぜすべてのコンポーネントにHOCをラップする必要がありますか?それを拡張するコンポーネントをラップしてエクスポートすることは可能ですか? – hazardous

+0

最も簡単なチェックは、HTMLコンポーネントの 'function'、typeof(BaseComponent)==" function "が' string'を使用するかどうかを調べることです。 – hazardous

答えて

1

BaseComponentが反応コンポーネントかどうかを確認し、必要な小道具を追加します。

if(BaseComponent.prototype.isReactComponent){ 
    //add props 
} 
+0

これに関するすべての文書ですか? – Leonardo

+0

https://github.com/facebook/react/blob/b1b4a2fb252f26fe10d29ba60d85ff89a85ff3ec/src/isomorphic/modern/class/ReactBaseClasses.js#L33ソースコードで確認できます。 – rlemon

+0

文書化されていない内部機能は、いつでも変更できるので使用しないでください。また、純粋なレンダリング関数を使用している場合、これは機能しません – Leonardo

関連する問題