Skip to main content

Zustand

import { createWithEqualityFn } from "zustand/traditional";import { persist, createJSONStorage, combine } from "zustand/middleware";import { deepEqual } from "fast-equals";/** - 狀態 */export interface BibleState {  /** - 書名 */  book: string;  /** - 章節 */  chapter: number;  /** - 節 */  verse: number;}/** - 預設狀態 */const initialState: BibleState = {  book: "",  chapter: 1,  verse: 1,};/** - 聖經狀態管理 */const useBibleStore = createWithEqualityFn(  persist(    combine(initialState, (set) => ({      /** - 更新書名、章節、節 */      setBible(book: string, chapter: number, verse: number) {        if (book && chapter > 0 && verse > 0) {          set({ book, chapter, verse });        }      },      /** - 清除狀態 */      resetBible() {        set(initialState);      },    })),    {      name: "@web_bible",      storage: createJSONStorage(() => localStorage),    },  ),  deepEqual,);export default useBibleStore;

頁面上引用此hook

const { chapter, verse, setBible } = useBibleStore();