Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Autoría | Ultima modificación | Ver Log |

import { useState, useCallback } from 'react'

const useLocalStorage = ({ stateName, initialValue }) => {
  const name = `persist/${stateName}`

  const getFromStorage = (name, defaultValue) => {
    try {
      const val = JSON.parse(localStorage.getItem(name) + '')
      if (val !== null) {
        return val
      } else {
        localStorage.setItem(name, JSON.stringify(defaultValue))
      }
    } catch {
      return defaultValue
    }
  }

  const [state, setState] = useState(getFromStorage(name, initialValue))

  const setValue = useCallback(
    (value) => {
      localStorage.setItem(name, JSON.stringify(value))
      setState(value)
    },
    [name]
  )

  return [state, setValue]
}

export default useLocalStorage