我非常喜欢反应proptypes的想法,我想知道它们是否可用于验证任何给定函数的输入,而不仅仅是传递给react组件的props。
例如:
function doSomething (thing1, thing2) {
Proptypes.validate(arguments, [Proptypes.string, Proptypes.number]);
}
有没有办法让proptypes这样做?
谢谢!
答案 0 :(得分:3)
是的,他们可以,但你需要通过一些无关的参数。
您可能想要使用包装函数来简化生活,但不要忘记React.PropTypes
只是函数本身。
例如:
React.PropTypes.string(props, propName, componentName)
其中props
是组件的整个道具对象,propName
是要检查的道具的名称(和键),componentName
是组件的名称&# 39;从中调用它。
虽然我认为推出自己的代码可能会更好,因为自己做这个代码的代码非常少,它可以保护您免受React.PropTypes
在未来版本中工作的任何潜在变化反应。
答案 1 :(得分:1)
支持验证器是函数,因此您可以调用它们。正如Prop Validation doc中的customProp
示例所示,参数为props
,propName
和componentName
。该函数在成功时返回null
或在失败时返回Error
。例如:
React.PropTypes.number({'a': 4}, 'a', 'foo')
// null
React.PropTypes.number({'a': 'b'}, 'a', 'foo')
// Error: Invalid undefined `a` of type `string`
// supplied to `foo`, expected `number`