<script setup> import { computed ,watch } from 'vue'; import { reactive, onMounted } from 'vue'; import { useRouter } from 'vue-router'; import { useStore } from 'vuex'; import { useRoute } from 'vue-router'; // 侧边栏 const items = [ { icon: 'el-icon-ali-home', index: '/dashboard3', title: '系统首页' }, { icon: 'el-icon-ali-cascades', index: '2', title: '储运信息', subs: [ { index: '/logistics', title: '详细信息' } ], }, { icon: 'el-icon-ali-cascades', index: '3', title: '个人管理', subs: [ { index: '/passwordChange3', title: '密码修改' } ], }, ]; const router = useRouter(); watch(router,()=>{ this.reload() }) inject:['reload'] // 路由 const route = useRoute(); watch( () => route.path, (oldValue, newValue) => { // console.log(oldValue, newValue); // removeSearch(); } ); const onRoutes = computed(() => { return route.path; }); const store = useStore(); const collapse = computed(() => store.state.collapse); // 折叠侧边栏 // defineExpose 可以省略 defineExpose({ items, onRoutes, collapse, }); </script> <style scoped> .sidebar { display: block; position: absolute; left: 0; top: 70px; bottom: 0; overflow-y: scroll; } .sidebar::-webkit-scrollbar { width: 0; } .sidebar-el-menu:not(.el-menu--collapse) { width: 250px; } .sidebar > ul { height: 100%; } </style>
时间: 2024-04-27 16:21:54 浏览: 144
Vue3+Ts+Pinia+Vue-Router4的后台管理系统源码.zip
这段代码是使用 Vue.js 框架开发的侧边栏组件,其中使用了 Vue.js 提供的 reactive、computed、watch、onMounted 等 API,以及 Vue Router 和 Vuex 等插件。侧边栏的数据由 items 数组提供,每个元素包含图标、索引和标题等属性,如果有子菜单,还包含 subs 属性。另外,该组件还使用了 inject 和 defineExpose API 用于父子组件之间的通信。样式方面,使用了 CSS 控制侧边栏的宽度、位置和滚动等效果。
阅读全文