2017-07-18 5 views
1

自分が常に小道具の方法を発射見つけた場合:チェックが

const Menu = (props) => <div style={styles.container} 
        onClick={(ev) => props.menuClick(ev, props.item)}>...</div> 

しかし、これらの方法は、時々オプションです。メソッドが存在する場合にのみ、どのようにメソッドを起動できますか?これは読めないように見える

const Menu = (props) => <div style={styles.container} 
    onClick={(ev) => props.menuClick ? props.menuClick(props.item_id, ev) :()=>{} }> 

おそらくそこpropTypeのsomekindは、デフォルト値の事は無名関数を無効にするために取り込まれていないすべての受信方法を変えることができます満たしていますか?

UPDATE:パラメータなしの方法について

、コメント欄で述べたように、これは与えられていない場合でも有効である。

const Menu = (props) => <div style={styles.container} 
        onClick={props.menuClick}>...</div> 

ReactJSはのonClick = {ヌル}

+3

'props.menuClick || ()=> {} 'の代わりに?: – T4rk1n

+1

' onClick = {null} 'はReactで有効であり、クリックされたときにエラーを投げることはないでしょうか? –

+0

また、3番目の例では、呼び出す関数のパラメータが同じであれば、ラップする必要はありません。正しく渡されます。 – T4rk1n

答えて

1
をexceptsでのように

デフォルトの空の関数を含むデフォルトの小道具を使用して、ES6クラスで関数を定義することができます。

class Menu extends Component { 
static defaultProps = { 
    onClick:() => {} 
} 

render() { 
    return(<div style={styles.container} onClick={this.props.onClick}></div>); 
} 
}