后台管理系统Hamburger组件实现

发布于:2025-02-11 ⋅ 阅读:(104) ⋅ 点赞:(0)

后台管理系统中几乎都会用到Hamburger组件,该组件主要用于折叠和展开左侧菜单栏,系统默认为展开菜单栏,当屏幕较小时可以折叠菜单栏,以便可以用更大的屏幕区域来查看系统数据区域。

以下是组件的实现代码:

<template>
    <div class="hamburger-container" @click="toggleClick">
        <svg-icon
            id="guide-hamburger"
            class="hamburger"
            :icon="icon"
        ></svg-icon>
    </div>
</template>

<script setup>
import { computed } from "vue";
import { useStore } from "vuex";

const store = useStore();
const toggleClick = () => {
    store.commit("app/triggerSidebarOpened");
};

const icon = computed(() =>
    store.getters.sidebarOpened ? "hamburger-opened" : "hamburger-closed"
);
</script>

<style lang="scss" scoped>
.hamburger-container {
    padding: 0 16px;
    .hamburger {
        display: inline-block;
        vertical-align: middle;
        width: 20px;
        height: 20px;
    }
}
</style>

需要注意的是,在点击切换的时候,需要将当前是折叠还是展开的记录在状态管理中,以便全局通过状态来修改菜单的样式。

// store/modules/app.js
export default {
    namespaced: true,
    state: () => ({
        sidebarOpened: true,
    }),
    mutations: {
        // 是否切换菜单
        triggerSidebarOpened(state) {
            state.sidebarOpened = !state.sidebarOpened;
        }
    },
    actions: {},
};

上面代码中使用了svg-icon组件为自定义封装的组件,代码的实现可以参考本专栏《Vue 3.0 中封装icon组件使用外部SVG图标》


网站公告

今日签到

点亮在社区的每一天
去签到