2017-06-28 5 views
1

Modalにさまざまなコンポーネントをラップしようとしていますが、それをサポートするすべての子にcloseModalプロパティが渡されます。Reactコンポーネントが小道具を期待しているかどうかを確認するにはどうすればいいですか?

現在、私はすなわち、this postに従い、親が近い方法で渡す必要があることを知らせるためにJSプロパティclosesModalを使用しています:

React.Children.map(
    this.props.children, 
    child => (
    child.closesModal ? 
     React.cloneElement(child, { closeModal: this.close }) : 
     child 
) 
) 

は、これは私が欲しいものを達成について移動する公正な方法ですが、 Reactコンポーネントをイントロスペクトしてプロパティが必要かどうかを調べる方法がありますか?ここで

+1

あなたが使用して 'propTypes' – Ved

+0

を確認することができ、これらのドキュメントは、「注意を言う:React.PropTypesはリアクトV15のよう推奨されていません。 5.代わりにprop-typesライブラリを使用してください。私は本当にこの小さなものを達成するために別のライブラリをインストールする必要がありますか? –

答えて

3

が同じのためのサンプル例です。

import PropTypes from 'prop-types'; // for React version React >=v15.5 

class Greeting extends React.Component { 

    render() { 
    return (
     <h1>Hello, {this.props.name}</h1> 
    ); 
    } 
} 

Greeting.propTypes = { 
    // This indicates name should be passed as props from parent. 
    name: PropTypes.string.required 
}; 

ドキュメント:https://facebook.github.io/react/docs/typechecking-with-proptypes.html

+0

ありがとう、私は明日これを試すことができますが、あなたは確かですか?コンポーネントが存在する場合、 'React.cloneElement'ピースだけを実行しようとしています。どうやって定義したら 'propTypes'でチェックできますか? –

関連する問題