Open1

パネル開閉状態とか諸々をsessionStorageで管理したい

LemonmanNo39LemonmanNo39

https://qiita.com/kannagi/items/570cc298843a38808c18

上記参考に、管理部分だけを抜粋。

import { useEffect, useState } from 'react';

type SessionStorageKeyType =
  | 'hogePage-hogeTools'
  | 'fugaPage-fugaTools';

export const useSessionStorage = <T>(key: SessionStorageKeyType, initialValue: T): [T, (value: T) => void] => {
  const [value, setValue] = useState(() => {
    const keyValue = sessionStorage.getItem(key);
    return keyValue ? (JSON.parse(keyValue) as T) : initialValue;
  });

  useEffect(() => {
    sessionStorage.setItem(key, JSON.stringify(value));
  }, [key, value]);

  return [value, setValue];
};

export default useSessionStorage;