@aliretail/react-materials-components
Version:
56 lines (44 loc) • 1.19 kB
JavaScript
import uniqueId from 'lodash/uniqueId';
/** 返回一个独一无二字符串,用作条件的key */
export var uniqueConditionKey = function uniqueConditionKey() {
return uniqueId('condition');
};
/** 返回一个独一无二字符串,用作关系组的key */
export var uniqueGroupKey = function uniqueGroupKey() {
return uniqueId('group');
};
/** 从组件值 => 后端想要的值 */
export var encodeValue = function encodeValue(v) {
var value = v;
if (typeof v === 'object') {
// 数组和对象
value = JSON.stringify(v);
} else if (typeof v === 'number') {
// 数字
value = v + '';
}
return value;
};
/** 从后端想要的值 => 组件值 */
export var decodeValue = function decodeValue(v) {
if (validateJSONString(v)) {
return JSON.parse(v);
}
return v;
};
/** 校验一个字符串是不是json 字符串 */
function validateJSONString(str) {
// number、undefined
if (!(typeof str === 'string')) {
return false;
} // json string、normal string
try {
var result = JSON.parse(str);
if (typeof result === 'object') {
return true;
}
return false;
} catch (err) {
return false;
}
}