我真的想基于React风格强制执行/验证数据,但我发现很难将它们的类从库中解耦为更通用。我怎么可能这样做? (请注意,这不是表单验证)
我给一个函数一个对象,我希望该函数根据“模式”验证该输入:
function(input){
validate(input, {
test: Validator.Number
})
}
请注意,它还支持嵌套数组和对象验证。 http://facebook.github.io/react/docs/reusable-components.html
我尝试了https://github.com/molnarg/js-schema,但扩展了原生对象Number.min(0).max(5),
答案 0 :(得分:0)
我不知道我是否正确理解了这个问题并且似乎与javascript更相关,以及如何编写和模块化javascript代码,您可以使用browserify http://browserify.org/,在一个模型中声明您的模型(架构) js文件和你的反应文件中包含它...他们调用Duck(myDuck)并检查布尔结果以验证输入..如果它真正添加到你的状态(或任何你想要的)以及它的失败过程此...
你可以尝试混合facebook.github.io/react/docs/reusable-components.html但它似乎与"扩展"更相关。组件中的功能,虽然我认为你可以完美地使用它们......
var schemas = {DuckValidation : schema({age: ....}), CatValidation : schema()}
var myComponent = React.createClass({
mixins: [schemas], // Use the mixin
onSubmitCat: function(obj) {
this.CatValidation(obj) ? this.sendToServer(obj) : this.showError()
return false
},
render: function() {
.....
}
});
虽然我认为使用browserify是更好的选择,如果你不想扩展你的组件的功能(检查比使用this.CatValidation,因为你的组件使用该方法扩展)
答案 1 :(得分:0)
当时PropTypes实际上非常孤立。最近有一个小小的更新,您现在应该可以更加独立地使用它们了:https://github.com/facebook/react/blob/master/src/core/ReactPropTypes.js
以下是用法:https://github.com/facebook/react/blob/master/src/core/ReactCompositeComponent.js#L947
告诉我这是否有帮助!