effector-persist
Version:
Higher-order function for persist effector store in local storage
38 lines (29 loc) • 1.3 kB
Markdown
# Effector persist
Micro package for create persists [effector](http://effector.now.sh) store. Like [redux-persist](https://github.com/rt2zz/redux-persist).
### Example:
```typescript
import { withPersist } from "effector-persist";
import { createStore, createEvent } from "effector";
const store = withPersist(createStore([], {name: 'shops'}));
const addStore = createEvent<{name: string}>();
store.on(addStore, (state, store) => [...state, store]);
```
### Example with Ramda
```typescript
import { withPersist } from "effector-persist";
import { createStore } from "effector";
import * as R from "ramda";
const createPersistedStore = R.pipe(createStore, withPersist);
const store = createPersistedStore([], {name: 'shops'});
```
### Example with expired
```typescript
import { withPersist } from "effector-persist";
import { createStore, createEvent } from "effector";
const store = withPersist(createStore([], {name: 'shops'}), {expire: Date.now() + 2000});
const addStore = createEvent<{name: string}>();
store.on(addStore, (state, store) => [...state, store]);
```
### How it works:
Every store update, `withPersist` cache result of update in LocalStorage with key `persist:<store_name>`.
When store is created `withPersist` restore previous state from snapshot in LocalStorage.