如何在自定义验证程序中使用PropType内置函数?

问题描述 投票:0回答:1

我为defaultValue prop使用了这个验证器(特定形状的array

defaultValue: PropTypes.arrayOf(PropTypes.shape({
        key: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
        value: PropTypes.string.isRequired
    }))

但是,现在defaultValue也可以是string类型。所以我正在尝试一个自定义验证器:

defaultValue: function (props, propName, componentName) {
  if (typeof props[propName] === "string"){

  } else if (props[propName] instanceof Array){
      //how to add old functionality here?
  } else {
      return new Error(
        `Invalid prop ${propName} supplied to ${componentName}. Validation failed`
      )
  }

}

我可以在自定义验证器中使用旧的PropTypes.arrayOf(....)吗?我想将旧的验证添加到新的自定义验证器函数中。如果无法使用PropTypes,如何使用自定义代码实现相同的功能?

reactjs react-proptypes
1个回答
0
投票

如果只想将默认值设置为字符串或自定义类型,则可以将oneOfType与字符串一起使用,并且您的类型也可以使用。

PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.arrayOf(PropTypes.shape({
                key: PropTypes.oneOfType([PropTypes.string, 
                                          PropTypes.number]).isRequired,
                value: PropTypes.string.isRequired}))
])
© www.soinside.com 2019 - 2024. All rights reserved.