vue 使用 elemen UI 导航菜单所遇到的问题

我们常常在开发vue 项目中使用 elemen UI 开结合开发,但在单页面应用中,随着用户的操作而改变的状态,我们常常使用 VueX 来做状态管理,但是,如果用户刷新页面,之前的状态都会消失,那么,导航该如何准确给当前页面的导航按钮添加选中的样式呢?

直接上代码

<template>
  <el-menu router mode="horizontal" @select="selectMenu">
    <template v-for="(item,index) in navlist">
      <el-menu-item :index="item.path" :key="index" disabled>{{item.name}}</el-menu-item>
    </template>
  </el-menu>
</template>

这样写的问题是,当用户刷新页面时,当前页面对应的导航并不会被添加选中样式,那该怎么办呢?

<template>
  <el-menu router :default-active="$route.path" mode="horizontal" @select="selectMenu">
    <template v-for="(item,index) in navlist">
      <el-menu-item :index="item.path" :key="index" disabled>{{item.name}}</el-menu-item>
    </template>
  </el-menu>
</template>

当我们这样写,将当前路径时时绑定到导航上,就可以完美实现了.

Vue 框架中,我们可以使用 Element UI 组件库中的 `el-menu` 和 `el-menu-item` 组件来实现导航菜单。同时,我们可以使用 Vue Router 来实现路由跳转。 以下是一个基本的例子: ```html <template> <div> <el-menu default-active="1" class="el-menu-vertical-demo" @select="handleSelect"> <el-menu-item index="1"> <router-link to="/home">首页</router-link> </el-menu-item> <el-menu-item index="2"> <router-link to="/about">关于我们</router-link> </el-menu-item> <el-menu-item index="3"> <router-link to="/contact">联系我们</router-link> </el-menu-item> </el-menu> <router-view></router-view> </div> </template> <script> export default { methods: { handleSelect(index) { console.log(index); }, }, }; </script> ``` 在上面的例子中,我们先使用 `el-menu` 组件创建了一个垂直方向的菜单,并设置了默认选中的菜单项为第一个。然后,我们使用 `el-menu-item` 组件创建了三个菜单项,并在每个菜单项中使用 `router-link` 组件来设置路由跳转的目标路径。 最后,我们使用 `router-view` 组件来渲染实际的页面内容。 在 Vue Router 中,我们需要在路由配置中设置每个路由对应的组件,例如: ```javascript import Vue from "vue"; import VueRouter from "vue-router"; import Home from "@/views/Home.vue"; import About from "@/views/About.vue"; import Contact from "@/views/Contact.vue"; Vue.use(VueRouter); const routes = [ { path: "/", redirect: "/home", }, { path: "/home", component: Home, }, { path: "/about", component: About, }, { path: "/contact", component: Contact, }, ]; const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes, }); export default router; ``` 在路由配置中,我们首先设置了根路径 `/` 的重定向到 `/home`,然后分别设置了 `/home`、`/about` 和 `/contact` 路径对应的组件。 在实际开发中,我们可以根据需要进一步定制菜单的样式和行为,例如添加二级菜单、设置菜单的图标等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值