GithubHelp home page GithubHelp logo

overmise / use-local-storage Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 1.44 MB

React Hook to help with using localStorage

JavaScript 100.00%
react hook localstorage javascript localstorage-api localstorage-wrapper

use-local-storage's Introduction

useLocalStorage(key, value)

React Hook to help with using localStorage

NPM JavaScript Style Guide

Goal

Hook the localStorage browser API in React so that you can use it like you'd useState, while supporting all data types inculding automatic JSON encoding/decoding.

Install

npm install --save @overmise/use-local-storage

Usage

You should useLocalStorage() almost like you useState, the only difference is you must provide a key within which the data should be stored like so:

const [username, setUsername] = useStorage('username', '')

From there on, you can use your state and it will automatically sync with localStorage:

setUsername('Bob')

To unset values, simply null out by invoking the same method with a blank string:

setUsername('')

Example

The following example component illustrates how this hooks works with objects, and how you could use it to store form data inside localStorage for later retrieval (this hook was extracted from a project that needed to do exactly this).

import React from 'react'

import { useLocalStorage } from '@overmise/use-local-storage'

const Form = () => {
    const [draft, setDraft] = useLocalStorage('draft', {
        title: 'An article about the meaning of life',
        body: 'Now I realize this was too ambitious and am gonna stop myself there.'
    })

    return (
        <form>
            <input value={draft.title} onChange={(event) => setDraft({ ...draft, title: event.target.value })} />
            <textarea value={draft.body} onChange={(event) => setDraft({ ...draft, body: event.target.value })} />
        </form>
    )
}

When you change values and reload the page, the values should have been persisted, hence what you typed should have been preserved and being displayed in the newly rendered page.

License

MIT ©

use-local-storage's People

Contributors

benvilliere avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.