pwfe-dom
Version:
palmg web front end dom
95 lines (87 loc) • 2.78 kB
JavaScript
/**
* Created by chkui on 2017/6/19.
* 基础工具模块
*/
;
/**
* 获取组件的显示名称
* @param WrappedComponent 包装组件
* @returns {*|string}
*/
export const getComponentName = (WrappedComponent) => {
return WrappedComponent.displayName || WrappedComponent.name || 'Component';
};
/**
* 判断当前的运行环境是否为服务器环境。
* 1)浏览器和服务器通用
* @return {boolean}。true: 浏览器环境,false:服务器环境
*/
export const isServerEvn = () =>{
return (typeof global === 'object') && (global.global === global);
}
/**
* 基础类异步管理回调类
* @constructor {object} params{
* @param {function} loader (onLoad)=>{
* //load complete then
* onLoad(loadResult);
* }。
* 初始化完成的回调,由于初始化方法是由外部执行,所以当外部完成初始化之后,需要掉这个接口并传入初始化结果通知实例完成初始化。
* 或者外部直接执行asyncLoader::onLoad(result) 方法
* }
*/
export class asyncLoader {
constructor(params){
this.handleList = [];
this.result = null;
this.onLoad = this.onLoad.bind(this);
params && params.loader && params.loader(this.onLoad)
}
/**
* 注册初始化完成后需要回调通知的方法
* @param callback
*/
register(callback){
this.result ? callback(this.result) : this.handleList.push(callback)
}
/**
* 加载完成的方法
* @param result
*/
onLoad(result){
this.result = result;
this.executeHandle();
}
/**
* 加载完成后执行的方法,非外部接口
*/
executeHandle(){
this.handleList && this.handleList.map(i=>i(this.result));
this.handleList = null; //限定只能执行一次
}
}
/**
* 获取src中key的值, 不存在则返回null
* @param {object} src 要被获取值的对象,方法或看对象中是否包含名为key的属性 {}.key = 'value';
* @param key 要获取值的属性
* @returns {*} 返回对应的属性值,不存在则返回 undefined
*/
export const safeGetValue = (src, key) => {
let rlt;
try {
if (key.startsWith("[")) {
rlt = eval("src" + key);
} else {
rlt = eval("src." + key);
}
}
catch (e) {
}
return rlt;
}
/**
* 判断当前内容是一个React的类还是一个元素(实例)。类=Component,元素(实例)=<Component/>
* 当传入的参数el是一个未定义对象时(undefined)也认为是一个元素,因为React中undefined表示什么都不显示
* @param el 要判断的对象
*/
export const isElement = (el) => 'object' === typeof el || 'undefined' === typeof el