UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

69 lines (68 loc) 1.9 kB
/** * 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;