我想直观地测试React组件.用户可以使用表单更改组件的道具.我想要(例如)呈现< select>基于React.PropTypes.oneOf([‘green’,’blue’,’yellow’]).
当我读取MyComponent.propTypes它返回由React定义的函数.有没有办法提取/阅读道具类型?
您不能直接从propTypes读取,因为正如你所说,它们被定义为函数.
您可以以中间格式定义您的propTypes,从中生成您的propTypes静态.
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,});
然后,您可以通过MyComponent.myPropTypes或element.type.myPropTypes访问自定义的propTypes格式.
这是一个帮助,使这个过程更容易一些.
function applyPropTypes(myPropTypes,Component) { Component.propTypes = processPropTypes(myPropTypes); Component.myPropTypes = propTypes; } applyPropTypes(myPropTypes,MyComponent);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。