【问题标题】:React PropTypes arrayOf oneOf shape A or shape BReact PropTypes arrayOf oneOf 形状 A 或形状 B
【发布时间】:2017-03-30 18:07:48
【问题描述】:

我试图在arrayOf() 中嵌套oneOf()shape() 列表,但出现错误。

警告:失败的道具类型:无效道具tabs[0] 提供给[object Object],应为 [null,null] 之一。

是否可以将oneOf() 传递给shape() 的列表?

tabs: React.PropTypes.arrayOf(
  React.PropTypes.oneOf([
    React.PropTypes.shape({
      id: React.PropTypes.string.isRequired,
      content: React.PropTypes.node.isRequired,
    }),
    React.PropTypes.shape({
      id: React.PropTypes.string.isRequired,
      params: React.PropTypes.object.isRequired,
    }),
  ]),
),

更新!找到了answer here,看来我应该改用 OneofType。

tabs: React.PropTypes.arrayOf(
  React.PropTypes.oneOfType([
    React.PropTypes.shape({
      id: React.PropTypes.string.isRequired,
      content: React.PropTypes.node.isRequired,
    }),
    React.PropTypes.shape({
      id: React.PropTypes.string.isRequired,
      params: React.PropTypes.object.isRequired,
    }),
  ]),
),

【问题讨论】:

  • 感谢您的回答!我遇到了同样的问题。

标签: reactjs react-proptypes


【解决方案1】:

我决定发布我对该问题的更新作为答案。

我找到了答案here。我应该改用 OneofType。

tabs: React.PropTypes.arrayOf(
  React.PropTypes.oneOfType([
    React.PropTypes.shape({
      id: React.PropTypes.string.isRequired,
      content: React.PropTypes.node.isRequired,
    }),
    React.PropTypes.shape({
      id: React.PropTypes.string.isRequired,
      params: React.PropTypes.object.isRequired,
    }),
  ]),
),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多