---
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
```

### 添加中

> 目前覆盖还不是很全面，希望大家一起讨论修改
