vue从详情页回到列表页,停留在之前的tab上

一、pc端

  pc端一般返回时有返回按钮,这种情况下,在跳转到详情页时通过query或params将当前tab的name或下标传过去,在返回时再通过query或params传回来

复制代码
  data() {
    return {
      tabActiveName: 'first'
    }
  },
  created() {
    // 当前显示的tab由返回按钮传来的值决定
    if (this.$route.params.tabActiveName) {
      this.tabActiveName = this.$route.params.tabActiveName
    }
  }
复制代码

 

二、移动端

  移动端一般返回时没有返回按钮,此时无法通过pc的那种方式。可以通过vuex将当前的tab状态保存,在回到列表页时获取到vuex中的name或下标

import { mapState, mapMutations } from 'vuex'

  需要注意当前组件中使用的 activeTab 和vuex中的 projectBoostTabsIndex 必须是两个不同的变量名

复制代码
  data() {
    return {
      activeTab: 0
    }
  },
  created() {
    ddNavSetTitle('项目推进')
    const { projectBoostTabsIndex } = this
    this.activeTab = projectBoostTabsIndex
  },
  watch: {
    activeTab(newVal) {
      this.setProjectBoostTabsIndex(newVal) // 如果不用辅助函数就直接使用commit触发 this.$store.commit('setProjectBoostTabsIndex', newVal)
    }
  },
  methods: {
    ...mapMutations({
      setProjectBoostTabsIndex: 'setProjectBoostTabsIndex'
    })
  },
  computed: {
    ...mapState({
      projectBoostTabsIndex: state => state.projectBoost.projectBoostTabsIndex
    })
  }
复制代码

store/projectBoost.js:

复制代码
const projectBoost = {
  state: {
    projectBoostTabsIndex: 0
  },
  mutations: {
    setProjectBoostTabsIndex(state, value) {
      state.projectBoostTabsIndex = value
    }
  }
}

export default projectBoost
复制代码

store/index.js:

import projectBoost from './modules/projectBoost'

  modules: {
    projectBoost
  }

 

posted @   吴小明-  阅读(1660)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示