【问题标题】:React propTypes for specific children components为特定子组件反应 propTypes
【发布时间】:2020-02-04 12:24:51
【问题描述】:

我有一个这样的函数组件:

const Foo = () => <div>Hello world</div>;

现在我有另一个组件接受子组件,但应该限制为一个或多个 Foo 组件(不允许其他组件)。

const Bar = ({ children }) => <div>{children}</div>;

如何在Bar 上设置propTypes 以实现此验证?

Bar.propTypes = {
  children: PropTypes.oneOf([
    PropTypes.arrayOf(PropTypes.node),
    PropTypes.node,
  ]);
};

上面的内容太松散了,因为它会让任何组件类型成为子组件。如何将其限制为仅允许 Foo

【问题讨论】:

标签: javascript reactjs react-proptypes


【解决方案1】:

您可以使用PropTypes.shape

Bar.propTypes = {
  children: PropTypes.oneOfType([
    PropTypes.shape({
      type: PropTypes.oneOf([Foo]),
    }),
    PropTypes.arrayOf(
      PropTypes.shape({
        type: PropTypes.oneOf([Foo]),
      })
    ),
  ]).isRequired
};

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多