# dva-model-persist

> #### 软件架构 适用于 dva 项目

Latest version **1.0.0** (published 2018-06-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install dva-model-persist
pnpm add dva-model-persist
yarn add dva-model-persist
bun add dva-model-persist
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2018-06-29 |
| First published | 2018-06-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 15 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 9 |
| Author | fattypanda |
| Maintainers | fattypanda |
| Keywords | dva, dva-model, redux-persist, dva-model-persist, dva-redux-persist, storage, localStorage, sissionStorage |

## Links

- npm: https://www.npmjs.com/package/dva-model-persist
- Repository: https://github.com/fattypanda/dva-model-persist
- Issues: https://github.com/fattypanda/dva-model-persist/issues
- npm.io page: https://npm.io/package/dva-model-persist

## Dependencies (4)

- [react](https://npm.io/package/react.md) ^16.2.0
- [store](https://npm.io/package/store.md) ^2.0.12
- [lodash](https://npm.io/package/lodash.md) ^4.17.10
- [react-dom](https://npm.io/package/react-dom.md) ^16.2.0

## Alternatives

- [localforage](https://npm.io/package/localforage.md) — 6.2M weekly downloads
- [localforage-observable](https://npm.io/package/localforage-observable.md) — 30.8K weekly downloads
- [@y/y](https://npm.io/package/@y/y.md) — 30.1K weekly downloads
- [@metaobjectsdev/render](https://npm.io/package/@metaobjectsdev/render.md) — 3.5K weekly downloads
- [@ledgerhq/coin-algorand](https://npm.io/package/@ledgerhq/coin-algorand.md) — 1.1K weekly downloads

## Recent versions

- 1.0.0 (latest) — 2018-06-29

## README

# dva-model-persist

#### 软件架构
适用于 dva 项目

#### Why
之前基于`redux-persist@5.*`开发的`dva-resist-persist`，在异步加载`model`时并不会存贮`model`的`state`,所以使用`redux`的`enhancer`特性开发这个支持异步`model`加载的工具 

#### 安装教程

```
yarn add dva-model-persist
```
或者
```
npm i -S dva-model-persist
```

#### 使用说明

dva示例
```
//src/index.js
import dva from 'dva';
import { persistEnhancer } from 'dva-model-persist';

const app = dva();
app.use({
  extraEnhancers: [
    persistEnhancer()
  ],
});
```

umi示例（或dva-cli@1.0.0.bate4版）
```
// src/dva.js
import { persistEnhancer } from 'dva-model-persist';

export function config () {
  return {
    extraEnhancers: [
      persistEnhancer()
    ],
  };
}
```

#### API 
##### persistEnhancer(opts)
```
type opts = Object
```
###### opts
`type key = String`: storage 的 key，默认：`model`

`type storage = Object`: storage 对象,默认：`sessionStorage`，更多的支持可以引入[`store`](https://www.npmjs.com/package/store) 
``` ecmascript 6
//  使用 localStorage
import storage from 'dva-model-persist/storage';
//  使用 sessionStorage
import storage from 'dva-model-persist/storage/sission';
```

`type blacklist = Array`: 黑名单，当白名单为空时生效，默认：`['@@dva','routing']`

`type whitelist = Array`: 白名单，默认：`[]`

`type keyPrefix = String`: key 前缀，默认：`persist`

#### Other

目前会出现`Unexpected key [你的异步model名] found in previous state received by the reducer. Expected to find one of the known reducer keys instead: "routing", "@@dva". Unexpected keys will be ignored.`的错误，暂时没有找到解决方法，但不影响功能。

出现原因：`dva-model-persist`恢复数据到`model`时，异步的`model`由于没有加载而报出的错误，该错误是由`redux`抛出

当异步的`model`加载后，会优先恢复数据到`model`，所以并不影响使用。

---
_Source: https://npm.io/package/dva-model-persist · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
