var myPropTypes = {
color: {
type: 'oneOf',
value: ['green', 'blue', 'yellow'],
},
};
function processPropTypes(propTypes) {
var output = {};
for (var key in propTypes) {
if (propTypes.hasOwnProperty(key)) {
// Note that this does not support nested propTypes validation
// (arrayOf, objectOf, oneOfType and shape)
// You'd have to create special cases for those
output[key] = React.PropTypes[propTypes[key].type](propTypes[key].value);
}
}
return output;
}
var MyComponent = React.createClass({
propTypes: processPropTypes(myPropTypes),
static: {
myPropTypes: myPropTypes,
},
});
2 回答
您无法直接从
propTypes
读取,因为正如您所说,它们被定义为函数 .您可以改为以中间格式定义propTypes,从中生成
propTypes
static .然后,您可以通过
MyComponent.myPropTypes
或element.type.myPropTypes
访问自定义propTypes格式 .这是帮助这个过程变得更容易的帮手 .
也许添加一个你正在尝试做的代码示例,因为我不太明白,但为什么你要访问propTypes? PropTypes不包含值,而是期望您的值类型应该是传递给组件的不同props的值 .
如果您有一个允许您更改道具的表单,我假设您正在将道具传递到将呈现选择组件的组件中 . 您可以通过道具对象访问这些道具 .
如果您尝试验证可以具有不同类型形式的propTypes,则可以使用以下内容: