Handle interaction with local and session storage.
npm install @blocdigital/uselocalstorage> Handle interaction with local and session storage
``bash`
npm install --save @blocdigital/uselocalstorage
| Function | Params | Description |
| ------------------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| init | \, data: unknown) => void | Set the data, generally this should be an empty version of the data type |string
| set | \, data: unknown) => void | Set the data, generally you will need to get the data modify it then set it. |string
| get | \) => T \| undefined | Get the data. |string
| remove | (key: ) => void | Remove a specific key and its contents. |void
| clear | () => | Remove all items from storage |EventType
| addEventListener | (event: , callback: (key?: string) => void, { signal?: AbortSignal, once?: boolean }) => void | Add as event listener for when this hook is used. |EventType
| on | (event: , callback: (key?: string) => void, { signal?: AbortSignal, once?: boolean }) => void | Pseudonym for addEventListener |EventType
| onAny | (callback: (event?: , key?: string) => void, { signal?: AbortSignal, once?: boolean }) => void | Add event listener, for all events, for when this hook is used |string
| removeEventListener | (key: , callback: (key: string) => void) => void | If you exactly match an addEventListener event you can remove it |string
| off | (key: , callback: (key: string) => void) => void | Pseudonym for removeEventListener |string
| offAny | (callback: (key: ) => void) => void | If you exactly match an onAny function you can remove it |
`tsx
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 ac = new AbortController();
storage.addEventListener('set', (key) => key === 'state' && setState(storage.get(key)), { signal: ac.signal });
// remember to tidy up you event listeners
return () => ac.abort();
}, [storage]);
return (