【ElementUI】组件库el-menu组件在退出抽屉时无法将选中状态恢复到第一项

 我们在做侧边菜单栏的时候可能会使用到【el-menu】这个组件,接下来就要考虑到一个问题,初始化界面的时候应该把第一个item设置为默认选中状态吧,这个效果的话实现比较简单,只需在data中定义default-active属性的变量名'activeMenu'赋值为'0',页面初始化就会默认选中第一下项并赋予高亮状态。

<el-drawer
        title="账号详情"
        :visible.sync="drawerDetail"
        :size="drawerWidth"
        @close="closeDrawer"
        v-loading="filterloading"
    >

<el-menu
                    :default-active="activeMenu"
                    class="el-menu-vertical-demo"
                    @select="handleSelect"
                >
                    <el-menu-item index="0" @click="">
                        <span slot="title">基础信息</span>
                    </el-menu-item>
                    <el-menu-item index="1" @click="">
                        <span slot="title">绑定</span>
                    </el-menu-item>
                    <el-menu-item index="2" @click="">
                        <span slot="title">订单</span>
                    </el-menu-item>
                    <el-menu-item index="3" @click="">
                        <span slot="title">订单</span>
                    </el-menu-item>
                    <el-menu-item index="4" @click="">
                        <span slot="title">优惠券</span>
                    </el-menu-item>
                    <el-menu-item index="5" @click="">
                        <span slot="title">积分</span>
                    </el-menu-item>
                    <el-menu-item index="6" @click="">
                        <span slot="title">兑换记录</span>
                    </el-menu-item>
                </el-menu>
</el-drawer>

data () {
        return {
            activeMenu: '0',        //菜单栏选中索引值
        }
    },
methods: {
        handleSelect (index) {
            this.activeMenu = index

        },
//关闭
        closeDrawer () {
            this.activeMenu = '0'
        }
}

 可以看到,当进入页面初始化状态就是默认选中了第一项。但是如果我们切换到第二项退出再进来呢?

 

 

可以看到选中第二项退出了再进入还是默认选中第二项,明明退出这个抽屉的时候就将默认选中状态设置为第一项,为什么没有效果?

 

 我们退出的时候打印一下这个'activeMenu'的值,看一下有没有修改成功

 

 可以看到,我们退出的时候是已经把这个activeMenu的默认选中值赋值为了'0',但依然没有切换回第一项,后来在翻阅文档中,发现了一种解决方案,以下参考代码。

<el-drawer
        title="账号详情"
        :visible.sync="drawerDetail"
        :size="drawerWidth"
        @close="closeDrawer"
        v-loading="filterloading"
    >

<el-menu
                    :default-active="activeMenu"
                    class="el-menu-vertical-demo"
                    @select="handleSelect"
                    ref="menuRef"
                >
                    <el-menu-item index="0" @click="">
                        <span slot="title">基础信息</span>
                    </el-menu-item>
                    <el-menu-item index="1" @click="">
                        <span slot="title">绑定</span>
                    </el-menu-item>
                    <el-menu-item index="2" @click="">
                        <span slot="title">订单</span>
                    </el-menu-item>
                    <el-menu-item index="3" @click="">
                        <span slot="title">订单</span>
                    </el-menu-item>
                    <el-menu-item index="4" @click="">
                        <span slot="title">优惠券</span>
                    </el-menu-item>
                    <el-menu-item index="5" @click="">
                        <span slot="title">积分</span>
                    </el-menu-item>
                    <el-menu-item index="6" @click="">
                        <span slot="title">兑换记录</span>
                    </el-menu-item>
                </el-menu>
</el-drawer>

data () {
        return {
            activeMenu: '0',        //菜单栏选中索引值
        }
    },
methods: {
        handleSelect (index) {
            this.activeMenu = index

        },
//关闭
        closeDrawer () {
            this.activeMenu = '0'
            this.$refs.menuRef.activeIndex = '0'
            console.log('activeMenu的值是',this.activeMenu)
        }
}

给menu添加一个ref属性,在关闭抽屉的时候将menu的activeIndex赋值为'0'就能完美的解决这个问题了。希望对你有所帮助。 

代码仅供参考。转载请附上原文出处链接和本声明。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值