我正在使用React的PropTypes和Flow类型检查器,但在获取可选功能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
不为null,但针对此代码运行Flow的类型检查器却给了我错误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()
等知道我们正在防范可能为null / undefined的值,但我找不到任何有效的方法。当然,将prop类型更改为React.PropTypes.func.isRequired
不会导致任何错误,但我想将此prop保持为可选。如何获得可选的功能 Prop 以通过类型检查?
最佳答案
这是我们发现保留PropType可选但仍具有Flow type check pass的一种方法。
...
handleClick: function() {
var exampleFn = this.props.exampleFn || null;
if (exampleFn) {
exampleFn();
}
},
...