如何在自定义验证器中使用 PropType 内置函数?
How to use PropType inbuilt functions inside a custom validator?
我正在为 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
,如何使用自定义代码实现同样的效果?
如果您只想将默认值设置为字符串或您的自定义类型,您可以将 oneOfType 与字符串和您的类型一起使用。
PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.shape({
key: PropTypes.oneOfType([PropTypes.string,
PropTypes.number]).isRequired,
value: PropTypes.string.isRequired}))
])
我正在为 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
,如何使用自定义代码实现同样的效果?
如果您只想将默认值设置为字符串或您的自定义类型,您可以将 oneOfType 与字符串和您的类型一起使用。
PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.shape({
key: PropTypes.oneOfType([PropTypes.string,
PropTypes.number]).isRequired,
value: PropTypes.string.isRequired}))
])