UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

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