vuex——计算属性获取的getter值需要刷新才能更新

11 篇文章 0 订阅
3 篇文章 0 订阅

vuex——计算属性获取的getter值需要刷新才能更新

描述:
 // state
 state: {
    leader: null
 },
 // getters
 getters: {
    getLead: state => state.leader
 }
 // mutations
 mutations: {
    setLead (state, data) {
      state.leader = data
    }
 },
// 页面中赋值
// 登录时改变state.leader的值
this.$store.commit('setLead', true)
// 组件中计算属性监听
import { mapGetters } from 'vuex'
computed: {
   leader () {
     ...mapGetters(['getLead'])
   }
 }
打印this.leader,直接获取计算属性值

在这里插入图片描述

刷新之后的打印结果

在这里插入图片描述

解决

增加监听函数watch,修改计算属性
computed: {
     ...mapGetters(['getLead'])
     //原来
   		//leader () {
    	// ...mapGetters(['getLead'])
   		//}
 }
watch: {
    // 监听getters数据 --- 'getLead'
    // 解决state数据可以更新,但getters数据需要刷新才能更新的问题
    getLead (val) {
      this.leader = val
      // this.leader是data中自定义的值,
      // 赋值之后,一定要重写之后的方法,
      // 不然只是取值,页面操作依然不会改变
      this.showVip() // 这是我页面上的方法名
    }
  },
Vuex getters是一种在Vue.js应用程序中访问和计算store中状态的方法。它们允许您从store中获取数据,并将其转换为您需要的格式。 在Vuex中,您可以定义getters来获取store中的数据,并在组件中使用它们。getters类似于Vue组件中的计算属性,它们可以根据store中的状态进行计算和转换。 要定义一个getter,请在Vuex store的getters对象中添加一个函数。这个函数将接收state作为第一个参数,并且您可以使用它来访问store中的状态。以下是一个示例: ```javascript // 在Vuex store中定义一个getter const store = new Vuex.Store({ state: { todos: [ { id: 1, title: '任务1', completed: false }, { id: 2, title: '任务2', completed: true }, { id: 3, title: '任务3', completed: false } ] }, getters: { completedTodos: state => { return state.todos.filter(todo => todo.completed) } } }) // 在组件中使用getter export default { computed: { completedTodos() { return this.$store.getters.completedTodos } } } ``` 在上面的示例中,我们定义了一个名为`completedTodos`的getter。它使用`filter`方法从store中的todos数组中过滤出已完成的任务。然后,我们可以在组件中使用`this.$store.getters.completedTodos`来访问这个getter。 通过使用getters,您可以对store中的数据进行任何需要的转换和计算,并将其用于组件中。这样,您可以保持组件的简洁性,并确保状态的一致性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值