Using localStorage in React and Next.js
Table of contents
We can't directly access localStorage in React and Next.js. So, for that purpose, here is the custom react hook, that will allow you to access localStorage.
import { useEffect, useState } from "react";
export function useLocalStorage<T>(key: string, initialValue: T) {
const [storedValue, setStoredValue] = useState<T>(initialValue);
useEffect(() => {
const item = window.localStorage.getItem(key);
setStoredValue(item ? JSON.parse(item) : initialValue);
}, [initialValue, key]);
const setValue = (value: T) => {
setStoredValue(value);
window.localStorage.setItem(key, JSON.stringify(value));
};
return [storedValue, setValue] as const;
}
If you don't want to create this hook on your own, you can simply install it using npm.
# Npm
npm install @hulkhooks/use-localstorage --save
# yarn
yarn add @hulkhooks/use-localstorage
# pnpm
pnpm add @hulkhooks/use-localstorage
Usage
import { useLocalStorage } from '@hulkhooks/use-localstorage'
function UseLocalStorageExample() {
const [value, setValue] = useLocalStorage('key', 'default-value');
return (
<>
<p>{value}</p>
<button onClick={() => setValue('new-value')}>Set value</button>
</>
);
}