代码之家  ›  专栏  ›  技术社区  ›  CaribouCode

特定子组件的反应属性类型

  •  0
  • CaribouCode  · 技术社区  · 4 年前

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

    现在我有了另一个组件,它接受子组件,但应该限制为 Foo 特定组件(不允许使用其他组件)。

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

    propTypes Bar 为了实现这个验证?

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

    ?

    1 回复  |  直到 4 年前
        1
  •  3
  •   Akhil Aravind    4 年前

    你可以用 PropTypes.shape

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