1.先写页面,添加样式,添加点击事件,绑定动态类名
<template> <div class="hamburger-container" @click="handleClick"> <svg-icon :icon="icon" /> </div></template><script setup>import { computed } from 'vue'import { useStore } from 'vuex'const store = useStore()const icon = computed(() => { return store.getters.sideBarOpened ? 'hamburger-opened' : 'hamburger-closed'})function handleClick() { store.commit('app/setSideBarOpened')}</script>
2.创建一个store模块,管理侧边栏伸缩状态
export default { namespaced: true, // 表示这是一个单独的模块, state: () => ({ sideBarOpened: true }), mutations: { setSideBarOpened(state, val) { state.sideBarOpened = !state.sideBarOpened } }}
3.添加点击事件,改变伸缩状态
4.给app-container绑定动态类名,给sidebar和navbar添加动态样式
<div class="app-wrapper" :class="[$store.getters.sideBarOpened ? 'openSideBar' : 'hideSidebar']" >