From 9eb8e80f4f736c4edffa650c685d1f170ca51aa1 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 15 May 2025 01:19:49 +0000 Subject: (대표님) 구매 요청사항 반영한 통합 rfq / 필터 개인화 / po-rfq MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hooks/use-local-storage.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 hooks/use-local-storage.ts (limited to 'hooks/use-local-storage.ts') diff --git a/hooks/use-local-storage.ts b/hooks/use-local-storage.ts new file mode 100644 index 00000000..f24c80db --- /dev/null +++ b/hooks/use-local-storage.ts @@ -0,0 +1,48 @@ +"use client" + +import { useState, useEffect } from 'react' + +export function useLocalStorage( + key: string, + initialValue: T +): [T, (value: T) => void] { + // State to store our value + const [storedValue, setStoredValue] = useState(initialValue) + + // Initialize with stored value or initial value + useEffect(() => { + try { + // Get from local storage by key + if (typeof window !== 'undefined') { + const item = window.localStorage.getItem(key) + // Parse stored json or if none return initialValue + setStoredValue(item ? JSON.parse(item) : initialValue) + } + } catch (error) { + // If error also return initialValue + console.error('Error reading from localStorage:', error) + setStoredValue(initialValue) + } + }, [key, initialValue]) + + // Return a wrapped version of useState's setter function that + // persists the new value to localStorage. + const setValue = (value: T) => { + try { + // Allow value to be a function so we have same API as useState + const valueToStore = + value instanceof Function ? value(storedValue) : value + // Save state + setStoredValue(valueToStore) + // Save to local storage + if (typeof window !== 'undefined') { + window.localStorage.setItem(key, JSON.stringify(valueToStore)) + } + } catch (error) { + // A more advanced implementation would handle the error case + console.error('Error writing to localStorage:', error) + } + } + + return [storedValue, setValue] +} \ No newline at end of file -- cgit v1.2.3