2014-12-19 16 views
2

我正在使用React的PropTypes和Flow類型檢查器,但我無法獲得可選函數prop來通過類型檢查。這裏有一個例子:React組件中的可選函數prop流動類型檢查失敗

var Example = React.createClass({ 
    propTypes: { 
    exampleFn: React.PropTypes.func 
    }, 

    handleClick: function() { 
    if (this.props.exampleFn) { 
     this.props.exampleFn(); 
    } 
    }, 

    render: function() { 
    return <a onClick={this.handleClick}>Click here</a>; 
    } 
}); 

雖然我檢查this.props.exampleFn不爲空,跑流量的類型檢查對這段代碼給我的錯誤

call of method exampleFn 
Function cannot be called on possibly null or undefined value 

我已經嘗試了不同的變化,如
if (this.props.exampleFn !== null && this.props.exampleFn !== undefined) {...}

this.props.exampleFn && this.props.exampleFn()
等知道我們正在防範可能爲空/未定義的值,但我找不到任何東西 這樣可行。當然,將道具類型更改爲React.PropTypes.func.isRequired不會導致錯誤,但我希望將此道具保留爲可選項。

我怎樣才能得到一個可選的函數prop來通過類型檢查?

+0

'if(this.props.exampleFn!= null)'工作嗎? – 2016-09-01 16:02:21

回答

4

以下是我們發現的一種保持PropType可選但仍具有Flow類型檢查通過的方法。

... 

handleClick: function() { 
    var exampleFn = this.props.exampleFn || null; 
    if (exampleFn) { 
    exampleFn(); 
    } 
}, 

...