我正在 React 创建一些按钮,触发从一个到下一个的状态更改。我的一些按钮具有三种状态,由枚举表示。这三种状态应按连续顺序设置。当达到最后一个值时,下一个操作应该再次将状态设置回枚举的第一个值。实现这个的巧妙方法是什么?
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),
}
)
)
); Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
下面是一个函数的示例,它接受任何枚举并将返回下一个值或第一个值(如果是最后一个值):