刷新后停在当前tab栏

tab栏切换不通过路由时,刷新会回到第一个tab栏,为了防止刷新回到第一个tab,需要通过路由。

路由配置:

{
   path: '/budgetShow/:name?',     //name  是一个变量,根据路由不同,path不同
   name: 'budgetShow',
   component: () => import('@/views/budgetManagement/index.vue'),
},

页面

<template>
  <div class="container">
    <el-card>
      <div slot="header" class="clearfix">
        <breadcrumb >
          <span slot="one">面包屑</span> 
        </breadcrumb>
      </div>

    <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
      <el-tab-pane v-for="(item,index) in tabPanes" :key="index" :label="item.label" :name="item.name"
        style="padding:10px">
        //动态组件   通过is的值渲染指定的组件   if可以实现每一个组件都重新加载(切换标签时,重新请求数据)
        <components :is="item.is" v-if="activeName===item.name"></components>
      </el-tab-pane>
    </el-tabs>

    </el-card>
  </div>
</template>

<script> 
  import expendBudget from "./expendBudget.vue"; 
  import incomeBudget from "./incomeBudget.vue"; 
  import assetsBudget from "./assetsBudget.vue"; 
  import assetsExpend from "./assetsExpend.vue"; 
  import laborCost from "./laborCost.vue";

  import store from '@/store/index.js'
  export default {
    data() {
      return {
        activeName: "first",
        tabPanes: []
      };
    },

    created() {
    //刷新显示刷新的标签栏
      this.activeName = this.$route.params.name ? this.$route.params.name : 'first';
      this.initTabPanes()
    },

    components: {
      expendBudget,
      incomeBudget,
      assetsBudget,
      assetsExpend,
      laborCost,
    },

    methods: {
      handleClick(tab, evnet) {
        this.activeName = tab.name
        let path = this.$route.path.split('/')[1];
        this.$router.push(`/${path}/${tab.name}`)      //对应路由
      },
 
      // 初始化tabs,部分页面需进行权限认证
      initTabPanes() {
        this.tabPanes = [
          { label: "tabName1", name: "first", is: "expendBudget" },
          { label: "tabName2", name: "second", is: "incomeBudget" },
          { label: "tabName3", name: "third", is: "assetsBudget" },
          { label: "tabName4", name: "fourth", is: "assetsExpend" },
          { label: "tabName5", name: "fifth", is: "laborCost" }, 
          
        ]

      }

    }
  };
</script>

<style lang='less' scoped> 
</style>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现点击tab刷新浏览器后还能记住当前点击的tab,你可以使用 `sessionStorage` 来保存当前选中的tab的状态。`sessionStorage` 是一个可以存储在浏览器窗口会话期间的数据存储对象,它与 localStorage 不同,localStorage 存储的数据没有过期时间,而 sessionStorage 存储的数据在浏览器关闭后会被清除。 以下是一个简单的示例代码,实现了点击 tab 刷新浏览器后还能记住当前选中的 tab: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Tabs Demo</title> <style> .tab { display: none; } .tab.active { display: block; } </style> </head> <body> <ul> <li><a href="#tab1">Tab 1</a></li> <li><a href="#tab2">Tab 2</a></li> <li><a href="#tab3">Tab 3</a></li> </ul> <div id="tab1" class="tab">This is tab 1.</div> <div id="tab2" class="tab">This is tab 2.</div> <div id="tab3" class="tab">This is tab 3.</div> <script> // 获取当前选中的tab,如果没有则默认选中第一个tab var activeTab = sessionStorage.getItem('activeTab') || '#tab1'; // 显示当前选中的tab document.querySelector(activeTab).classList.add('active'); // 点击tab时保存选中的状态到sessionStorage document.querySelectorAll('ul li a').forEach(function(link) { link.addEventListener('click', function(event) { event.preventDefault(); var href = this.getAttribute('href'); document.querySelector(activeTab).classList.remove('active'); document.querySelector(href).classList.add('active'); activeTab = href; sessionStorage.setItem('activeTab', activeTab); }); }); </script> </body> </html> ``` 在这个示例中,当用户点击一个 tab 时,我们会将当前选中的 tab 的 ID 存储到 `sessionStorage` 中。当用户刷新页面时,我们会从 `sessionStorage` 中获取当前选中的 tab 并将其显示出来。 注意,`sessionStorage` 只能在同一个窗口或标签页中共享数据,如果用户在一个新的标签页或窗口中打开了你的网站,那么 `sessionStorage` 中的数据就不会被共享。如果你需要在不同窗口或标签页之间共享数据,可以使用 `localStorage`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值