你能把 propTypes 和 defaultProps 结合起来吗?

Can you combine propTypes with defaultProps?

我想知道你是否可以用不那么冗长的方式编写以下代码:

class MyComponent extends Component {
  static propTypes = {
    foo: PropTypes.string.isRequired,
    bar: PropTypes.string,
  };
  static defaultProps = {
    bar: '',
  };

像这样:

class MyComponent extends Component {
  static propTypes = {
    foo: PropTypes.string.isRequired,
    bar: [PropTypes.string, ''],
  };

或者这样:

class MyComponent extends Component {
  static propTypes = {
    foo: PropTypes.string.isRequired,
    bar: PropTypes.string(''),
  };

不,当前的实现不能。

development/test 运行时需要

PropTypes (https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes),默认值将成为最终构建的一部分。

在未来,React 团队计划将 PropTypes 从 React 包的其余部分中分离出来。

如果他们有兴趣,您可以建议联系 React 团队。