Saya sedang mencipta beberapa butang dalam React yang mencetuskan perubahan keadaan daripada satu ke seterusnya. Beberapa butang saya mempunyai tiga keadaan, diwakili oleh enum. Ketiga-tiga negeri ini harus ditetapkan dalam susunan berturut-turut. Apabila nilai terakhir dicapai, operasi seterusnya harus menetapkan keadaan kembali kepada nilai pertama penghitungan semula. Apakah cara bijak untuk mencapai ini?
import { create } from 'zustand'
import { devtools, persist, createJSONStorage } from 'zustand/middleware'
import { BackgroundVariant as Background } from 'reactflow';
function nextBackground(background: Background): Background {
switch (background) {
case Background.Dots:
return Background.Cross;
case Background.Cross:
return Background.Lines;
default:
return Background.Dots;
};
};
interface MenuState {
background: Background;
toggleBackground: () => void;
}
export const useMenuStore = create<MenuState>()(
devtools(
persist(
(set) => ({
background: Background.Dots,
toggleBackground: () => set((state) => ({
background: nextBackground(state.background)
}))
}),
{
name: 'menu-storage',
storage: createJSONStorage(() => localStorage),
}
)
)
);
Berikut ialah contoh fungsi yang menerima sebarang enum dan akan mengembalikan nilai seterusnya atau nilai pertama jika ia adalah nilai terakhir: