reactjs – React PropTypes验证arrayOf所需元素无法正常工作
发布时间:2020-12-15 05:03:57 所属栏目:百科 来源:网络整理
导读:空数组[]传递以下PropTypes定义,即使我们声明字符串元素是必需的. { a: React.PropTypes.arrayOf( React.PropTypes.string.isRequired ).isRequired} 相反,空对象{}不传递以下propTypes定义: { a: React.PropTypes.shape({ x: PropTypes.string.isRequired
空数组[]传递以下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.' ); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |