首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在路由组件之间切换时,vuex getter的值不会更新

在路由组件之间切换时,Vuex getter的值不会更新的原因是因为Vuex的getter是基于状态的计算属性,而不是响应式的数据。当路由组件切换时,Vuex的状态仍然保持不变,因此getter的值也不会更新。

要解决这个问题,可以使用Vuex的watch来监听状态的变化,并在状态变化时手动更新getter的值。具体步骤如下:

  1. 在Vuex的store中定义一个getter,用于获取需要监听的状态值。
代码语言:javascript
复制
// store.js
const store = new Vuex.Store({
  state: {
    // 状态值
    count: 0
  },
  getters: {
    // getter
    getCount: state => state.count
  },
  mutations: {
    // 修改状态值的方法
    increment(state) {
      state.count++
    }
  }
})
  1. 在需要监听状态变化的组件中,使用Vuex的watch方法监听状态的变化,并在回调函数中更新getter的值。
代码语言:javascript
复制
// MyComponent.vue
export default {
  computed: {
    // 使用getter获取状态值
    count() {
      return this.$store.getters.getCount
    }
  },
  watch: {
    // 监听状态的变化
    '$store.state.count'(newVal) {
      // 手动更新getter的值
      this.$store._vm.$watch(() => this.$store.getters.getCount, () => {}, { immediate: true })
    }
  }
}

通过以上步骤,当路由组件切换时,Vuex getter的值会自动更新。

推荐的腾讯云相关产品:无

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对于常见VUE 问题的理解

VUE通过Obsever实例化数据给对象本身,实例对象中的Dep属性用来收集依赖,通过Object.defineproperty把property全部转为getter和setter。在getter/seter内通过闭包引用dep常量追踪依赖。get函数的主要职责是返回正确的属性值和追踪依赖,set函数的职责是正确的为属性设置新值和触发依赖。每一个实例都对应一个watcher实例,当依赖项的seter/getter触发时会通知wacher,从而使它关联的数据重新渲染。在proxy之前VUE无法监听到对象属性的变化,VUE提供了$set 和 Vue.set方法让我们有能力给对象添加新属性的同时触发依赖,实际上触发的就是OB实例化对象中的dep()。对于数组VUE采用拦截数组本身方法的方式,在数组方法中触发依赖,从而实现监听数组的变化。proxy相对于defineproperty来说关心的是具体的key,对修改和读取Object.key进行拦截,而defineproperty关心的是Object本身

02
  • 前端vue面试题2021及答案_redux面试题

    答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb; 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习; 双向数据绑定:保留了angular的特点,在数据操作方面更为简单; 组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势; 视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作; 虚拟DOM:dom操作是非常耗费性能的, 不再使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式; 运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。

    01

    2022 最新 Vue 3.0 面试题

    Vue 作为一款轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟 DOM、运行速度快,并且作者是中国人尤雨溪,对应的 API 文档对国内开发者优化,作为前端 开发人员的首选入门框架 Vue 的优势: 1、Vue.js 可以进行组件化开发,使代码编写量大大减少,读者更加易于理解。 2、Vue.js 最突出的优势在于可以对数据进行双向绑定。 3、使用 Vue.js 编写出来的界面效果本身就是响应式的,这使网页在各种设备上都能 显示出非常好看的效果。 4、相比传统的页面通过超链接实现页面的切换和跳转,Vue 使用路由不会刷新页 面。 5、vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和 dom,这样大大加快了访问速度和提升用户体验。 6、而且他的第三方 UI 组件库使用起来节省很多开发时间,从而提升开发效率。

    01
    领券