tuns-mobile-components
Version:
Tuns Design UI
99 lines (67 loc) • 1.78 kB
Markdown
---
category: 常用库
type: General
title: Utils
cols: 1
subtitle: 工具库
order: 3
---
工具库,封装了一些常用的功能
> react-native 下请使用`solomon-utils-rn`
### equals
对比两个对象是否一样,通常用于组件优化
```js
import { equals } from "solomon-utils";
equals({ a: "b" }, { a: "c" }); // false
```
### merge
合并两个对象
```js
import { merge } from "solomon-utils";
merge({ a: "b" }, { c: "d" }); // { a: 'b', c: 'd' }
```
> `mergeAll, mergeDeepLeft, mergeDeepRight` 等方法保持跟`ramda`一样的使用方式,明细请[参考](https://ramdajs.com/docs/#merge)
### delay
一个 Promise 的 setTimeout 实现,用于在 effect 中手动延迟
```js
import { delay } from "solomon-utils";
// ...
effects: {
*fetch(_, { call, put }) {
const { data } = yield call(fetch);
yield delay("2000");
yield put({ type: "save/title", payload: data });
},
},
// ...
```
### storage
local storage 操作
> 需要先在 config.js 中的`storagePrefix: "__demo__",`配置`storage`前缀
> RN 版本下使用的是`import { AsyncStorage } from 'react-native'`,RN 版本下不需要配置前缀
```js
import { storage } from "solomon-utils";
storage.set("name", "zs");
```
### clone
深拷贝一个对象
```js
import { clone } from "solomon-utils";
const obj = [{}, {}];
const ojbClone = clone(obj);
obj === objClone; // false
obj[0] === objClone[0]; // false
```
### isEmpty
判断一个值是否为空值
```js
import { isEmpty } from "solomon-utils";
isEmpty([1, 2, 3]); //=> false
isEmpty([]); //=> true
isEmpty(""); //=> true
isEmpty(null); //=> false
isEmpty({}); //=> true
isEmpty({ length: 0 }); //=> false
```
### 添加中
> 目前覆盖还不是很全面,希望大家一起讨论修改