yylib-quick-mobile
Version:
yylib-quick-mobile
69 lines (68 loc) • 1.9 kB
JavaScript
/**
* Created by Dio on 2016/7/16.
* 组件基类
*/
var React = require('react');
var YYPropTypes= require('./YYPropTypes');
//var uiMeta = {
// name:"base"
// ,fields:[{
// name: ""//属性名称
// , value: ""//属性默认值
// , type: ""//属性类型
// , desc: ""//属性说明
// }]
//};
var YYComponent = {
classPrefix:'yyui'
/**
* 组件元数据
*/
//,uiMeta:{name:'base',fields:[]}
,uiName:'base'
/**
* 当前组件的样式名
* @returns {string}
*/
,className:function(extClass){
var {props} = this;
var cls = (props.className?props.className+' ':'')+this.classPrefix+'-';
if(this.uiMeta){
cls += this.uiMeta.name;
}else{
cls += this.uiName;
}
if(extClass){
return cls +'-'+extClass;
}else{
return cls;
}
}
/**
* 获取默认属性配置
*/
,getDefaultProps: function () {
var _props = {},field;
//依据元数据解析属性列表
var _meta = this.prototype.uiMeta;
if(_meta&&_meta.fields&&_meta.fields.length>0){
for(var i =0;i<_meta.fields.length;i++){
field = _meta.fields[i];
if(!field || field.value === undefined || (field.type == YYPropTypes.func && field.value === null)){
continue;
}
_props[field.name] = field.value;
}
//console.log('组件['+_meta.name+']属性',_props);
return _props;
}
}
,render: function (){
return (
<div {...this.props} className={this.className()}>
{this.props.children}
</div>
);
}
}
module.exports = YYComponent;