Vuex

专为Vue.js应用程序开发的状态(data里的变量)管理模式,更好的帮助我们在组件外部统一管理状态。

State 唯一的数据源,每个data里的变量
const Counter = {
    template: '<div>{{count}}</div>',
    computed: {
        count() {
            return this.$store.state.count
        }
    }
}
Getters 可以派生出一些新的状态
const store = new Vuex.Store({
    state: {
        todos: [
            {id: 1, text: '...', done: true},
            {id: 1, text: '...', done: false}
        ]
    },
    getters: {
        doneTodos: state => {
            return state.todos.filter(todo => todo.done)//获取done为true的数据
        }
    }
})
Mutations 唯一可以提交和改变状态,更改store
const store = new Vuex.Store({
    state: {
        count: 1
    },
    mutations: {
        increment(state) {
            //变更状态
            state.count++;
        }
    }
})
//调用
store.commit('increment')

Actions 提交的是Mutation,而不是直接变更状态,可以包含任意异步操作

const store = new Vuex.Store({
    state: {
        count: 1
    },
    mutations: {
        increment(state) {
            //变更状态
            state.count++;
        }
    },
    actions:{
        increment(context){
            context.comit('increment')
        }
    }
})

Modules
当管理的状态比较多时,需要将strore对象分割成模块

状态管理模式

// 如果在模块化构建系统中,请确保在开头调用了 Vue.use(Vuex)
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state,n) {
      //变更状态
      state.count+=n;
    }
  }
})

//唤醒 mutation handler(回调函数)
store.commit('increment',10)

store.commit({
  type: 'increment',
  amount: 10
})

通过 store.state 来获取状态对象,以及通过 store.commit 方法触发状态变更

router里获取和改变vuex的值

router.app.$options.store.state.nickName
router.app.$options.store.commit('updataLoginModalFlag',true);

转载于:https://www.cnblogs.com/conglvse/p/9521925.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值