Skip to content

Latest commit

 

History

History
72 lines (52 loc) · 1.84 KB

README.md

File metadata and controls

72 lines (52 loc) · 1.84 KB

Hookstate Persist

Simple and configurable peristence plugin for Hookstate state management.

Works on React Native and Web.

Installation

To install, run:

yarn add hookstate-persist
npm install hookstate-persist

Usage

// React Native
import {createState} from '@hookstate/core';
import CreatePersistor, {PersistorWrapper} from 'hookstate-persist';
import AsyncStorage from '@react-native-async-storage/async-storage';
import {Product} from '../utils/types';

// for tree object state, wrap root state with Persist wrapper
// this gives you the benefit of validating the hydrateTime value is not null
const wrapped = PersistorWrapper({
  cart: [] as Array<Product>,
  user: {} as User,
  location: '',
});
const store = createState(wrapped);

// create the peristor pluging
const persistor = CreatePersistor({
	key: '@myStore', // store name
	engine: AsyncStorage, // storage engine which implements getItem & setItem
});

// attach plugin and you're done
store.attach(persistor);

Peristor options

CreatePersistor {
  key: string, // key in storage
  engine: StoreEngine, // engine; any type of storage that implements "getItem" and "setItem" eg AsyncStorage or localStorage
  whitelist?: Array<string>, // property names of items in state you want to persist (optional)
  blacklist?: Array<string>, // property names of items in state you want excluded from storage(optional)
}

API

  CreatePersistor(config: ICreatePersistor) // creates the peristence plugin
  PersistorWrapper(state: State<S>) // Wrapps the root state. Do not use if root state is not map/tree like

Contiributions

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT