@nicer-toolbox/use-sticky-state

Persisting React State in localStorage

Usage no npm install needed!

<script type="module">
  import nicerToolboxUseStickyState from 'https://cdn.skypack.dev/@nicer-toolbox/use-sticky-state';
</script>

README

Nicer Toolbox

Use Sticky State

Persisting React State in localStorage

NPM JavaScript Style Guide

Usage

function App() {
  const [count, setCount] = useStickyState(0, 'count')

  return (
    <div className='App'>
      <h1>Counter</h1>
      <p>Current count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  )
}

Code Behind The Scenes

function useStickyState(defaultValue, key) {
  const [value, setValue] = React.useState(() => {
    const stickyValue = window.localStorage.getItem(key)
    return stickyValue !== null ? JSON.parse(stickyValue) : defaultValue
  })
  React.useEffect(() => {
    window.localStorage.setItem(key, JSON.stringify(value))
  }, [key, value])
  return [value, setValue]
}