gpt4 book ai didi

reactjs - React PropTypes 对 arrayOf 必需元素的验证无法正常工作

转载 作者:行者123 更新时间:2023-12-03 13:37:18 24 4
gpt4 key购买 nike

空数组 [] 传递以下 PropTypes 定义,即使我们声明字符串元素是强制性的。

{
a: React.PropTypes.arrayOf(
React.PropTypes.string.isRequired
).isRequired
}

相反,空对象{}不传递以下propTypes定义:

{
a: React.PropTypes.shape({
x: PropTypes.string.isRequired
}).isRequired
}

数组验证似乎无法正常工作。有什么想法吗?

最佳答案

您可以使用自定义验证器。我不相信当没有项目时你可以在 arrayOf 中强制执行 string.isRequired 。从 arrayOf 的自定义验证器的工作方式来看,它似乎在每个键上调用回调。因此,如果该值没有键,则不会调用任何验证器。

(注意,这未经测试)

a: function(props, propName, componentName) {
var errorCount = 0
var prop = props[propName]
// ensure it is an array
if (typeof prop !== 'array') {
errorCount++
}
// ensure array has items
else if (prop.length == 0) {
errorCount++
}
// ensure all items are strings
else {
for (var i = 0; i < prop.length; i++) {
if (typeof prop[i] !== 'string') errorCount++
}
}
// throw error
if (errorCount > 0) {
return new Error(
'Invalid prop `' + propName + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}

关于reactjs - React PropTypes 对 arrayOf 必需元素的验证无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39470324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com