Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6753 stevensc 1
import { useState, useCallback } from 'react'
6744 stevensc 2
 
6753 stevensc 3
const useLocalStorage = ({ stateName, initialValue }) => {
4
  const name = `persist/${stateName}`
6744 stevensc 5
 
6753 stevensc 6
  const getFromStorage = (name, defaultValue) => {
6744 stevensc 7
    try {
6753 stevensc 8
      const val = JSON.parse(localStorage.getItem(name) + '')
9
      if (val !== null) {
10
        return val
11
      } else {
12
        localStorage.setItem(name, JSON.stringify(defaultValue))
13
      }
14
    } catch {
15
      return defaultValue
6744 stevensc 16
    }
6753 stevensc 17
  }
6744 stevensc 18
 
6753 stevensc 19
  const [state, setState] = useState(getFromStorage(name, initialValue))
6748 stevensc 20
 
6753 stevensc 21
  const setValue = useCallback(
22
    (value) => {
23
      localStorage.setItem(name, JSON.stringify(value))
24
      setState(value)
25
      console.log(name, value)
26
    },
27
    [name]
28
  )
6744 stevensc 29
 
6753 stevensc 30
  return [state, setValue]
6744 stevensc 31
}
32
 
33
export default useLocalStorage