Zustandのデータ永続化

localStorageに値を保持することで、ブラウザが閉じられても値を永続的に保持することができます。

// themeStore.ts
import { create } from 'zustand'
import { persist } from 'zustand/middleware'

type ThemeState = {
  theme: 'light' | 'dark'
  toggleTheme: () => void
}

export const useThemeStore = create(
  persist
<ThemeState>(
    (set) => ({
      theme: 'light',
      toggleTheme: () =>
        set((state) => ({
          theme: state.theme === 'light' ? 'dark' : 'light',
        })),
    }),
    {
      name: 'theme-storage', // localStorageのキー名
    }
  )
)
// ThemeToggle.tsx
import { useThemeStore } from './themeStore'

const ThemeToggle = () => {
  const theme = useThemeStore((state) => state.theme)
  const toggleTheme = useThemeStore((state) => state.toggleTheme)

  return (
    <button onClick={toggleTheme}>
      現在のテーマ: {theme}
    </button>
  )
}

コメントを残す 0

Your email address will not be published. Required fields are marked *