0.1.1 • Published 6 years ago
context-storage v0.1.1
Context Storage
React hook for sharing localStorage via context.
values are automatically converted to and from JSON.
Install
$ npm install --save context-storageor
$ yarn add context-storagerequires: any version of react with hooks. (react >= 16.8.0)
Usage
import React from 'react'
import createStorage from 'context-storage'
const [Provider, useStorage] = createStorage('local-storage-key')
const Title = () => <h1>Hello {useStorage()[0]}!</h1>
const UserNameInput = () => {
const [name, setName] = useStorage()
const handleChange = ({ target }) => setName(target.value)
return <input value={name || ''} onChange={handleChange} />
}
export const App = () => (
<Provider>
<Title />
<UserNameInput />
</Provider>
)Arguments
key is the only required argument.
| name | type | description |
|---|---|---|
| key | string | which key in localStorage to use |
| fallback | any | fallback when localStorage is empty |
| replacer | function︱array | passed to JSON.stringify |
| reviver | function | passed to JSON.parse |
| storage | object | with getItem and setItem methods |
Implementation
the value will always be encoded as JSON when saving to localStorage.
and decoded when read back.
it's safe to use objects and arrays, as long as they are non-circular.
following JSON standards, it's to be expected that, without custom replacer/reviver:
- prototypes will be lost;
Functionswill get discarded;Dateswill be cast intoISO 8601strings.
MapandSetcan be used with customreplacerandreviverarguments.