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

组件或元素的正确类型是什么

花健
2023-03-14

我正在创建一个组件,我希望元素类型是可配置的。

const Col = ({ containerElement, children }) => {
  return (
    <containerElement>
      {children}
    </containerElement>
  );
};

Col.defaultProps = {
  containerElement: 'div'
};

所以容器元素可以是上面的defaultProps中的元素,也可以是组件。

<Col containerElement={<MyComponent} />

我不能得到的propTypes验证,我已经尝试了这个:

Col.propTypes = {
  className: PropTypes.string,
  containerElement: PropTypes.oneOf([
    PropTypes.string,
    PropTypes.element
  ]),

但它不能正确验证。

提供给Col的值div的prop组件类无效,

共有3个答案

锺离赤岩
2023-03-14

试试这个:

Col.propTypes = {
    className: PropTypes.string,
    containerElement: PropTypes.oneOfType([
        PropTypes.string,
        PropTypes.func
    ]),
}

因为React组件是全局意义上的函数

typeof (class MyClass {}) // => "function"
施彦
2023-03-14

您没有在组件上定义componentClass属性-您的道具称为containerElement,您应该使用oftype

Col.propTypes = {
  className: PropTypes.string,
  containerElement: PropTypes.oneOfType([
    PropTypes.string,
    PropTypes.element
  ])
查锦程
2023-03-14

现在是道具类型15.7。0发布后,您可以执行以下操作:

Col.propTypes = {
  ...
  containerElement: PropTypes.elementType,
}
 类似资料:
  • 我创建了一个元素列表,我想更新其中一个列表元素 这是对update方法的调用: 这是更新方法: 在该方法中,我收到警告“从方法生成函数”,并建议“方法‘update\elem’可能是‘static’” 更新列表元素而不收到警告的正确方法是什么?

  • 问题内容: 我一直在弄乱JSON一段时间,只是将其作为文本推出,它并没有伤害任何人(据我所知),但是我想开始做正确的事情。 我见过 这么 多所谓的“标准”为JSON内容类型: 但是哪一个是正确的,还是最好的?我发现在它们之间存在安全性和浏览器支持问题。 我知道有一个类似的问题, [如果RESTAPI返回JSON,则为哪种MIME类型?,但我想要一个更有针对性的答案。 问题答案: 对于JSON文本:

  • 处理计时器时正确的类型是什么?我试过和

  • 问题内容: 我正在 Angular2 应用程序上工作,我需要显示-但是是 HTML 元素。正确的方法是什么? 更新 请注意,这会阻止使用选项,而不是完全渲染。 该 打字稿 组件有一个方法,看起来像这样: 我实际上需要防止元素被单击,而不仅仅是与 CSS 一起出现。我以为我首先需要潜在地绑定到属性,但这是不正确的,因为锚元素没有属性。 我查看并考虑过使用,但是这妨碍了我的工作方式-这是要求的一部分。

  • 我正在开发一个Angular2应用程序,我需要显示—但是<code>禁用<code>一个<code> 更新 请注意,这将阻止使用而不渲染 ,但是这妨碍了我的< code>cursor: not-allowed风格的工作——这是需求的一部分。

  • 我正在尝试使用JSDoc语法记录我的函数。 上面的函数接受单个参数,可以是JQuery对象,也可以是。 getElementById返回值的有效JSDoc类型是什么? 例如,以下两项均有效: 另外,我以后在哪里可以找到这个?