美文网首页
vue中自定义菜单在刷新后保持选中状态的实现方式

vue中自定义菜单在刷新后保持选中状态的实现方式

作者: 前端放弃师 | 来源:发表于2020-03-24 14:30 被阅读0次
    自定义菜单.png

    先说一下自定义菜单的基本实现,当我们在做自定义菜单并实现初始选中及点击切换选中状态时,常规操作是这样的

    <!-- HTML部分 -->
    <ul class="tab-title">
            <li @click="activeClick(index)" v-for="(item,index) in list" :key="index" v-bind:class="{active:index==activeIndex}">{{item.name}}</li>
    </ul>
    
    //js部分
    export default {
        data() {
          return {
            activeIndex: 0,
            list:[
              {name: '公司简介',value: 'company'},
              {name: '平台优势',value: 'adv'},
              {name: '联系我们',value: 'callMe'}
            ]
          };
        },
        methods: {
          activeClick(index){
            console.log(index)
            this.activeIndex = index;
            this.$router.push({ name: this.list[index].value });//路由跳转
          }
        }
      };
    

    以上代码实现了自定义菜单的基本功能,但是并不完善,当我们选中某个标签并刷新页面时,页面的选中状态发生了变化,变成了默认选中的第一个,所以我们初始需要获取路由的值来给activeIndex重新赋值,可以通过以下调整来实现。

    <!-- HTML部分 -->
    <ul class="tab-title">
            <!-- v-bind:class里换成通过value值来判断选中 -->
            <li @click="activeClick(index)" v-for="(item,index) in list" :key="index" v-bind:class="{active:item.value==onActive}">{{item.name}}</li>
    </ul>
    
    //js部分
    export default {
        data() {
          return {
            onActive:'company',//可以选list的第一个value值,也可以为空
            list:[
              {name: '公司简介',value: 'company'},
              {name: '平台优势',value: 'adv'},
              {name: '联系我们',value: 'callMe'}
            ]
          };
        },
        mounted () {
          // console.log(this.$route)
          //在这里做初始化的选中
          this.onActive = this.$route.name
        },
        methods: {
          activeClick(index){
            console.log(index)
            //点击时重新赋值
            this.onActive = this.list[index].value;
            this.$router.push({ name: this.list[index].value });//路由跳转
          }
        }
      };
    

    大功告成,如果大家有更好的实现方式请多多指点~

    相关文章

      网友评论

          本文标题:vue中自定义菜单在刷新后保持选中状态的实现方式

          本文链接:https://www.haomeiwen.com/subject/mscoyhtx.html