Bạn không thể đọc trực tiếp từ propTypes
từ đó, như bạn nói, chúng được định nghĩa như chức năng.
Thay vào đó, bạn có thể xác định các propTypes của mình ở định dạng trung gian, từ đó bạn sẽ tạo ra các mã propTypes
tĩnh.
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,
},
});
Sau đó, bạn có thể truy cập vào định dạng propTypes tùy chỉnh của bạn thông qua MyComponent.myPropTypes
hoặc element.type.myPropTypes
.
Đây là trợ giúp để làm cho quy trình này dễ dàng hơn một chút.
function applyPropTypes(myPropTypes, Component) {
Component.propTypes = processPropTypes(myPropTypes);
Component.myPropTypes = propTypes;
}
applyPropTypes(myPropTypes, MyComponent);
Nguồn
2016-03-07 09:27:31
Nó cũng sẽ thực sự thú vị để programatically có thể đọc các đạo cụ mặc định sử dụng có thể 'getDefaultProps' chức năng. – Vadorequest