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']"
>