javascript – 应该反应`propTypes`和`defaultProps`与Flowtype一起使用,还是Flowtype足够全面?

考虑一个简单的例子,例如:

class CommentAreaComponent extends React.Component {
static propTypes = {
    id: PropTypes.string.isRequired,
    loading: PropTypes.bool,
};

static defaultProps = {
    loading: false,
};

在构造函数中,我可以定义这样的东西来实现(我认为)同样的事情:

class MyComponent extends React.Component {
    constructor({
        loading = false,
    }:{ 
        id:string, 
        loading?:boolean 
    }) {
        super(arguments[0]);
    }
}

第二个示例仅使用Flowtype.使用Reacts PropTypes和DefaultProps是否有优势?或者我可以在使用FlowType时完全删除它们吗?

最佳答案
您肯定可以使用Flow类型而不是React PropTypes,但您提出的语法并不是常用的方法.请参阅Flow docs(向下滚动以查看ES6语法):

class Button extends React.Component {
  props: {
    title: string,
    visited: boolean,
    onClick: () => void,
  };

  state: {
    display: 'static' | 'hover' | 'active';
  };

  static defaultProps = {
    visited: false,
  };

  constructor(props) {
    super(props);
    this.state = {
      display: 'static',
    };
  }

  render() {
    let className = 'button ' + this.state.display;
    if (this.props.visited) {
      //...
    }

    return (/*...*/);
  }
}

您可以使用PropTypes对Flow类型进行的唯一操作是定义custom validators(例如,检查prop是否是有效的电子邮件).

我有更多Flow React examples on github,但我没有用Flow v0.22测试它们,只有v0.21.他们可能需要进行微调.

转载注明原文:javascript – 应该反应`propTypes`和`defaultProps`与Flowtype一起使用,还是Flowtype足够全面? - 代码日志