第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

vue實用技巧之路由跳轉(zhuǎn)

標簽:
Vue.js

写过的代码,踩过的坑,终将成为解决技术问题的宝贵经验

如果你因为路由跳转刷新问题而烦恼,或者是和这篇文章https://blog.csdn.net/wang1006008051/article/details/78686451讲的差不多(该文章的解决方案有bug+ _ +),那我的方法便能很好解决你的问题

webp

image.png


需求:实现路由跳转,选中状态

webp

image.png

方案1.0.0

1、使用router-link跳转,会自带class名,改变其样式即可


webp

image.png


2、代码

// html<ul>    <li v-for="(item,index) of navList" @click="selectNav(item.id)">
    <router-link :to="'/'+item.id">{{item.title}}</router-link>
   </li></ul>// css.router-link-exact-active{        color: red

    }// js
    data(){        return {            navList:[
            {title: '首页',id:'index',}, 
            {title: '店铺',id:'shop'}, 
            {title: '创业直播',id:'live'}, 
            {title: '我的',id:'my'}
            ]

        }
    },// router.js{      path: '/index', 
      name: '首页',// 路由项的名字
      component: Home // 组件的名字
    },
      {      path: '/shop', 
      name: '店铺',      component: Home 
    },
      {      path: '/live', 
      name: '创业直播',      component: Home ,

    },
      {      path: '/my', 
      name: '我的',      component: Home 
    },

3、缺点,只适合一级导航或菜单跳转,当有二级跳转,便会有bug


webp

image.png

我们想要的效果是页面是子页面,但选中的状态是父级


webp

image.png

方案1.0.1

1、设置一个状态,判断时候和当前相等,相等则选中

data(){        return {            // 设置状态
            isSelect:"",
            navList:[
            {title: '首页',id:'index',}, 
            {title: '店铺',id:'shop'}, 
            {title: '创业直播',id:'live'}, 
            {title: '我的',id:'my'}
            ]

        }
    },

2、循环navList,执行点击事件,进行路由跳转

// html
<ul>
            <li v-for="(item,index) of navList" @click="selectNav(item.id)">
                <p :class="isSelect == item.title ? 'active' : ''">{{item.title}}</p>
            </li>
            
        </ul>
        <router-link :to="'/live/'+id">我是产业创业直播的子页面</router-link>
            <router-link :to="'/my/'+id">我的子页面</router-link>
// js
selectNav (id) {
          this.$router.push({path: `/${id}`});
            this.isSelect = this.$route.name
  
      }
// router.js
  {
      path: '/index', 
      name: '首页',// 路由项的名字
      component: Home // 组件的名字
    },
      {
      path: '/shop', 
      name: '店铺',
      component: Home 
    },
      {
      path: '/live', 
      name: '创业直播',
      component: Home ,

    },
      {
      path: '/my', 
      name: '我的',
      component: Home 
    },
      {
      path: '/live/:id', 
      name: 'ss',
      component: Home 
    },
     {
      path: '/my/:id', 
      name: '我的1',
      component: Home 
    },

3、利用$routes自带属性进行判断,是否和当前页一样

// 此方法可解决刷新时候选中的状态
    mounted(){        this.isSelect = this.$route.name;        if(this.$route.name === "default"){            this.isSelect = "首页"
        }else if(/^\/live/g.test(this.$route.path)){            console.log(2)                this.isSelect = "创业直播"
        }else if(/^\/my/g.test(this.$route.path)){            this.isSelect = "我的"
        }
   
    },// 此方法是点击选中的是否选中的状态
    created(){    
this.$router.afterEach(to => {      
    if(/^\/live/g.test(to.path)){        this.isSelect = "创业直播"
    }else if(/^\/my/g.test(to.path)){        this.isSelect = "我的"
    }
    });
    }

}

代码或许冗余,如果你们有更好的解决方案,欢迎指点。。。



作者:jia林
链接:https://www.jianshu.com/p/7a9ea8dbbd30


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 1
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消