Vue-设置默认路由选中

需求分析:

  一个导航组件,需要其中一个是选中状态,并且样式呈现高亮,选中的导航对应的页面也需要展示出来。

功能实现:

router-link内置有一个选中状态,当处于当前路由时,会给 router-link 标签加一个类名 router-active-class;
同时还提供有一个 exact 属性,当加了 exact 属性的时候表示精确匹配,也就是会精确匹配 Url,所以如果给主路由设置了 exact 属性的话,当处于子路由时,Url 就匹配不到主路由了,那么主路由也就不会处于选中状态;
所以如果想主路由和子路由都处于选中时不用设置 exact 属性。


标签:  router-link       //在页面中会解析为我们熟系的 a 标签

类:router-active-class     //在这个类名下设置路由选中的高亮样式

属性:exact           //精准匹配路由   

路由:

routes: [
    {
      path: '/page1',
      name: 'Page1',
      component: Page1
    } ,
    {
      path: '/page2',
      name: 'Page2',
      component: Page2,
      children:[
                {
                   path: '/chil1',
                   name: 'Chil1',
                   component: Chil1
                },
                {
                    path: '/chil2',
                    name: 'Chil2',
                    component: Chil2
                }
            ]     
    },
    {
      path: '/page3',
      name: 'Page3',
      component: Page3
    }
  ]        

html:

<router-link to="/父路由的地址名字/要去的子路由的名字"></router-link>

css:

.router-active-class{
    color: #fff,
    background-color: red    
} 

 



转载于:https://www.cnblogs.com/yangchin9/p/11004973.html

<think>嗯,用户想了解如何在Element UI的el-menu组件中设置默认选中的菜单项。首先,我需要回忆一下Element UI的文档。记得el-menu有一个default-active属性,用来指定当前激活的菜单项。这个属性的值应该对应菜单项的index值。 那用户可能是在开发后台管理系统,比如导航菜单,需要默认打开某个页面。接下来要确认用户是否正确设置了index属性。每个el-menu-item的index必须是唯一的字符串,否则default-active可能不生效。 另外,用户可能遇到的问题包括:设置了default-active但没效果,或者动态加载数据后默认选中失效。这时候需要检查index是否是字符串,或者是否在数据渲染后才设置default-active的值。 还有,用户可能想通过路由路径来设置默认激活项,比如当前路由是/home,那么对应的菜单项index设为'1',这时候可以用$route.path来绑定default-active。不过要注意index和路由路径的匹配,可能需要处理一下路径字符串。 另外,动态菜单的情况,比如从后端获取菜单数据,这时候要确保在数据加载完成之后再设置default-active的值,否则可能找不到对应的index。可能需要使用v-if或者监控数据加载状态来确保时机正确。 总结一下,关键点有几个:default-active属性的使用,index的唯一性和类型,以及动态数据下的处理。可能还需要提醒用户注意路由模式是否匹配,比如使用router-link的情况。最后,给出一个示例代码会有帮助,让用户更清楚如何实现。</think> Element UI 的 `<el-menu>` 组件中设置默认选中项,可以通过 **`default-active`** 属性实现。该属性需要绑定一个与菜单项 `index` 值匹配的字符串,以下是具体用法和注意事项: --- ### 关键步骤 1. **绑定 `default-active` 属性** 在 `<el-menu>` 标签中设置 `:default-active="activeIndex"`,其中 `activeIndex` 是你的响应式变量(如 Vue data 中的值)。 2. **为菜单项设置唯一 `index`** 每个 `<el-menu-item>` 必须配置唯一的 `index` 属性(字符串类型),例如 `index="1"`。 -- ### 示例代码 ```vue <template> <el-menu :default-active="activeIndex" mode="horizontal" @select="handleSelect" > <el-menu-item index="1">首页</el-menu-item> <el-menu-item index="2">产品</el-menu-item> <el-menu-item index="3">文档</el-menu-item> </el-menu> </template> <script> export default { data() { return { activeIndex: "1" // 默认选中首页(对应 index="1") }; }, methods: { handleSelect(index) { this.activeIndex = index; // 更新选中状态 } } }; </script> ``` --- ### 常见问题解决 1. **动态数据导致不生效** 如果菜单项是动态生成的,确保在数据加载完成后再设置 `default-active`(比如在 `mounted` 或异步请求回调中设置)。 2. **与路由结合使用** 若需根据当前路由自动选中菜单,可以监听路由变化并更新 `activeIndex`: ```javascript watch: { $route(to) { // 假设路由为 /home 时对应 index="1" this.activeIndex = to.path === "/home" ? "1" : "2"; } } ``` 3. **强制类型匹配** `default-active` 和 `index` 必须同为字符串类型。如果使用数字会不生效,需转换为字符串。 --- 通过上述方法,你可以轻松控制 `<el-menu>` 的默认选中状态。如果需要更复杂的逻辑(如根据权限动态设置),可以在数据初始化阶段计算 `activeIndex` 的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值