vue中的context和store区别在哪里

根据文档,vuex中的context拥有store的所有属性和方法,那么他们的区别在哪里呢?

new vuex.store({
    state: {},
    getters: {},
    mutations:{},
    actions:{
        increase(context){
            // 拥有state、getters、commit、dispatch
            // replaceState、registerModule、unregisterModule
            context.commit()
        }
    },
    modules:{}
})
阅读 8.3k
2 个回答

context 就是当前的vuex实例对象;它拥有实例的所有方法

  function registerAction (store, type, handler, local) {
    var entry = store._actions[type] || (store._actions[type] = []);
    entry.push(function wrappedActionHandler (payload) {
      // 这里就是 action 中 context 所代理的 store 所有事件、属性
      // local 就是经过判断是否为 namespace 模式,做的方法适配,底层就是 store 实例
      let context = {
        dispatch: local.dispatch,
        commit: local.commit,
        getters: local.getters,
        state: local.state,
        rootGetters: store.getters,
        rootState: store.state
      }
      
      // handler 就是 actions 对应的函数
      var res = handler.call(store, context, payload);
      if (!isPromise(res)) {
        res = Promise.resolve(res);
      }
      if (store._devtoolHook) {
        return res.catch(function (err) {
          store._devtoolHook.emit('vuex:error', err);
          throw err
        })
      } else {
        return res
      }
    });
  }

区别就是 context 代理了 store 一部分方法、属性

我是 gauseen 一起进步

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题