0.2.2 • Published 12 months ago

@blocdigital/uselocalstorage v0.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

uselocalstorage

Handle interaction with local and session storage

Install

npm install --save @blocdigital/uselocalstorage

Usage

API

FunctionParamsDescription
init\<T>(key: string, data: unknown) => voidSet the data, generally this should be an empty version of the data type
set\<T>(key: string, data: unknown) => voidSet the data, generally you will need to get the data modify it then set it.
get\<T>(key: string) => T | undefinedGet the data.
remove(key: string) => voidRemove a specific key and its contents.
clear() => voidRemove all items from storage
addEventListener(event: EventType, callback: (key?: string) => void) => voidAdd as event listener for when this hook is used.
on(event: EventType, callback: (key?: string) => void) => voidPseudonym for addEventListener
onAny(callback: (event?: EventType, key?: string) => void) => voidAdd event listener, for all events, for when this hook is used
removeEventListener(key: string, callback: (key: string) => void) => voidIf you exactly match an addEventListener event you can remove it
off(key: string, callback: (key: string) => void) => voidPseudonym for removeEventListener
offAny(callback: (key: string) => void) => voidIf you exactly match an onAny function you can remove it

Example

import { useState, useEffect } from 'react';

// Hooks
import useLocalStorage from '@blocdigital/uselocalstorage';

const Example = () => {
  const [state, setState] = useState('hello world');

  // initiate the session storage
  const storage = useLocalStorage('session');

  // initialise the storage state
  useEffect(() => {
    storage.init('state', 'hello world');
  }, [storage]);

  // set up listeners to keep state in sync with storage
  useEffect(() => {
    const onStateChange = (key) => {
      if (key !== 'state') return;

      setState(storage.get(key));
    };

    storage.addEventListener('set', onStateChange);

    // remember to tidy up you event listeners
    return () => storage.removeEventListener('set', onStateChange);
  }, [storage]);

  return (
    <div>
      <span>Current state: {state}</span>
      <br />
      <button onClick={() => storage.set('state', String(Date.now()))}>Change State</button>
    </div>
  );
};
0.2.1

12 months ago

0.2.0

12 months ago

0.1.4

1 year ago

0.2.2

12 months ago

0.1.3

1 year ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago