我正在使用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();
  }
},

...

10-06 15:19