当前位置: 首页 > 知识库问答 >
问题:

特定子组件的类型

罗智刚
2023-03-14

我有这样一个功能组件:

const Foo = () =

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

常量栏=({孩子})=

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

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

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


共有1个答案

姬高澹
2023-03-14

您可以使用PropTypes。形状

Bar.propTypes = {
  children: PropTypes.oneOfType([
    PropTypes.shape({
      type: PropTypes.oneOf([Foo]),
    }),
    PropTypes.arrayOf(
      PropTypes.shape({
        type: PropTypes.oneOf([Foo]),
      })
    ),
  ]).isRequired
};
 类似资料:
  • 我有一个组件和一个组件,当有一个子组件不是组件时,我想抛出一个错误。这是可能的,还是我试图解决错误的问题?

  • 问题内容: 我有一个组件和一个组件,当有不是组件的子代时,我想抛出一个错误。这可能吗,还是我想解决错误的问题? 问题答案: 您可以为每个孩子使用displayName,可通过以下类型进行访问:

  • 我有这个: 我想选择类为col-md-4,6,8,12的排班的孩子。有没有什么好办法一次全选? 可以有多个行DIV,我将使用wrapAll将每个行DIV的子级包装到其他DIV中。所以如果我使用wrapAll,它只是将其他行div的所有内容转移到第一个行div。如果我将选择器查询放在循环内部,它只是继续包装子项乘以行divs的数量。我不想让这种事发生。 你们听懂了吗?

  • 问题内容: 我已将JTable设置为在同一列中显示String和Boolean值。我有以下代码来设置两种对象类型的渲染器。 我面临的问题是,总是调用Object的渲染器,而不是布尔值或字符串。我尝试删除对象的渲染器,仍然没有运气。 问题答案: 我已将JTable设置为在同一列中显示String和Boolean值 然后,您不能只使用普通的渲染逻辑。 通常,根据方法返回的值选择渲染器。但是,这是基于列

  • 我想只允许特定的组件作为孩子。例如,假设我有一个Menu组件,它应该只包含作为子组件,如下所示: 因此,当我尝试将另一个组件作为子组件时,我希望Typescript在IDE中抛出一个错误。有东西警告我,我应该只作为孩子使用。例如,在这种情况下: 此线程几乎类似,但不包括TypeScript解决方案。我想知道这个问题是否可以使用TypeScript类型和接口来解决。在我想象的世界中,它看起来是这样的

  • 使用Axon Framework-我能够重播整个事件存储并重新创建视图模型。但是是否可以为特定类型或特定ID重播事件。 提前致谢