UNPKG

@nkey-ui/use-local-storage

Version:

A React hook for handling data in local storage.

38 lines (37 loc) 937 B
// src/index.ts import { useState } from "react"; import { isServer } from "@nkey-ui/shared-utils"; function useLocalStorage(key, initialValue) { const [storedValue, setStoredValue] = useState(() => { if (isServer) { return initialValue; } try { const item = localStorage.getItem(key); return item ? JSON.parse(item) : initialValue; } catch (error) { console.log(error); return initialValue; } }); function setValue(value) { try { const valueToStore = value instanceof Function ? value(storedValue) : value; setStoredValue(valueToStore); if (!isServer) { localStorage.setItem(key, JSON.stringify(valueToStore)); } } catch (error) { console.log(error); } } function removeValue() { if (!isServer) { localStorage.removeItem(key); } } return [storedValue, setValue, removeValue]; } export { useLocalStorage };