美文网首页
vuex的原理以及实现

vuex的原理以及实现

作者: 峰回路转_best | 来源:发表于2020-08-14 17:20 被阅读0次

    vuex的主要作用是做数据管理,数据单向流,在vue的项目中基本上都会用到,对于初学者会感到很迷糊,觉的很神秘,其实它的原理相对还是比较简单的,下面是模仿vuex的原理自己实现一个简单的vuex

    let Vue;
    
    class Store {
      constructor(options) {
        // 把状态交给vue来管理
        this.state = new Vue({
          data: options.state,
        });
    
        this.mutations = options.mutations;
        this.actions = options.actions;
        options.getters && this.handleGetters(options.getters);
      }
    
      commit = (type, arg) => {
        this.mutations[type](this.state, arg);
      };
    
      dispatch(type, arg) {
        this.actions[type]({ commit: this.commit, state: this.state }, arg);
      }
    
      handleGetters(getters) {
        this.getters = {};
        Object.keys(getters).forEach((key) => {
          Object.defineProperty(this.getters, key, {
            get: () => {
              return getters[key](this.state);
            },
          });
        });
      }
    }
    
    function install(_Vue) {
      Vue = _Vue;
      Vue.mixin({
        beforeCreate() {
          if (this.$options.store) {
            Vue.prototype.$store = this.$options.store;
          }
        },
      });
    }
    
    export default { Store, install };
    

    其实原理相对还是比较简单的,使用的话,还是和原本的vuex类似

    // main.js
    import Vuex from './kStore.js';
    
    Vue.use(Vuex);
    // 注册vuex模块
    const store = new Vuex.Store({
      state: {
        count: 1,
      },
      mutations: {
        add(state, n = 1) {
          state.count += n;
        },
      },
    });
    
    new Vue({
      store,
      router,
      render: (h) => h(App),
    }).$mount('#app');
    

    相关文章

      网友评论

          本文标题:vuex的原理以及实现

          本文链接:https://www.haomeiwen.com/subject/omfndktx.html