Skip to main content

useSessionStorage

React side-effect hook that manages a single sessionStorage key

Usage

Live Editor
function Demo() {
  // bind string
  const [value, setValue] = useSessionStorage("my-key", "key");

  return (
    <div>
      <div>Value: {value}</div>
      <button onClick={() => setValue("bar")}>bar</button>
      <button onClick={() => setValue("baz")}>baz</button>
      {/* delete data from storage */}
      <button onClick={() => setValue(null)}>Remove</button>
    </div>
  );
};

Result
Loading...

API

useSessionStorage

Returns

readonly [T | null, React.Dispatch<React.SetStateAction<T | null>>]: A tuple with the following elements:

  • The current value of the sessionStorage.
  • A function to update the value of the sessionStorage.

Arguments

ArgumentDescriptionTypeDefaultValue
keykeystring (Required)-
defaultValuedefault valueT | undefined-
optionsoptional paramsUseSessionStorageOptions<T> | undefined-

UseSessionStorageOptions

PropertyDescriptionTypeDefaultValue
serializerCustom data serializationUseSessionStorageSerializer<T>-
onErrorOn error callback(error: unknown) => voidconsole.error
effectStorageValueset to storage when nodata in first mount, deprecatedT | (() => T)-
mountStorageValueset to storage when nodata in first mountT | (() => T)-
listenToStorageChangeslisten to storage changesbooleantrue

UseSessionStorageSerializer

PropertyDescriptionTypeDefaultValue
readCustom data read(raw: string) => T (Required)-
writeCustom data write(value: T) => string (Required)-