在纯函数代码中使用反应proptypes进行验证

时间:2015-09-07 07:45:53

标签: javascript validation reactjs

我非常喜欢反应proptypes的想法,我想知道它们是否可用于验证任何给定函数的输入,而不仅仅是传递给react组件的props。

例如:

function doSomething (thing1, thing2) {
    Proptypes.validate(arguments, [Proptypes.string, Proptypes.number]);
}

有没有办法让proptypes这样做?

谢谢!

2 个答案:

答案 0 :(得分:3)

是的,他们可以,但你需要通过一些无关的参数。

您可能想要使用包装函数来简化生活,但不要忘记React.PropTypes只是函数本身。

例如:

React.PropTypes.string(props, propName, componentName)

其中props是组件的整个道具对象,propName是要检查的道具的名称(和键),componentName是组件的名称&# 39;从中调用它。

虽然我认为推出自己的代码可能会更好,因为自己做这个代码的代码非常少,它可以保护您免受React.PropTypes在未来版本中工作的任何潜在变化反应。

答案 1 :(得分:1)

支持验证器是函数,因此您可以调用它们。正如Prop Validation doc中的customProp示例所示,参数为propspropNamecomponentName。该函数在成功时返回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`