yylib-quick-mobile
Version:
yylib-quick-mobile
70 lines (69 loc) • 2.39 kB
JavaScript
/**
* Created by Dio on 2016/7/16.
* 组件类
*/
var React = require('react');
var uuid = require('uuid');
var YYComponent = require('./YYComponent');
var YYPropTypes= require('./YYPropTypes');
//标识唯一ID
var _uuid=0;
var YYClass = {
/**
* 规范属性类型
*/
PropTypes:YYPropTypes
/**
* 子类继承父类
* @param subClass 子类function
* @param superClass 父类function
*/
,inherits:function(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: { value: subClass, enumerable: false, writable: true, configurable: true }
});
//优先考虑使用setPrototypeOf支持,否则使用__proto__支持
if (superClass)Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
}
//生成一个唯一ID序列数
,uuid:function(){
return Date.now() + '_' + (_uuid++);
}
//生成一个32位的唯一ID序列
,uuid32:function(){
var uuidArr = uuid.v4().split("-");
return uuidArr.join("");
}
/**
* 创建一个组件类
* @param spec
* @returns {*|Function}
*/
,create:function(spec){
var _exClass = Object.assign({},YYComponent,spec);
var _class = React.createClass(_exClass);
return _class;
}
/**
* 定义组件类的一个字段属性
* @param propName 属性名
* @param propValue 属性默认值
* @param propType 属性值数据类型
* @param isRequired 是否为必填属性
* @param propDesc 属性说明
* @returns {{propName: *, propType: *, propValue: *,isRequired:boolean,propDesc: *}}
*/
,field:function(propName,propValue,propType,isRequired,propDesc){
return {
name:propName//属性名称
, value: propValue//属性默认值
, type: propType//属性值数据类型
, isRequired:isRequired//是否为必填属性
, desc: propDesc//属性说明
}
}
};
module.exports = YYClass;