美文网首页
Vuex模拟实现

Vuex模拟实现

作者: 翔子丶 | 来源:发表于2021-05-10 08:14 被阅读0次
实现思路
  • 实现install方法

    vuex是vue的一个插件,所以和模拟VueRouter类似,先实现Vue插件约定的install方法

  • 实现Store类

    1. 构造函数接收四个options选项

      new Vuex.Store({
        state: {},
        getters: {},
        mutations: {},
        actions: {}
      })
      
    2. state需要设置响应式处理

    3. getter实现

    4. commit和dispatch的实现

install方法
let _Vue = null
function install (Vue) {
    _Vue = Vue
    _Vue.mixin({
        // 混入到beforeCreate阶段
        beforeCreate () {
            if (this.$options.store) {
                Vue.prototype.$store = this.$options.store
            }
        }
    })
}

Store类
class Store {
    const {
      // 防止用户未传入 设置默认对象
      state = {},
      getters = {},
      mutations = {},
      actions = {}
    } = options

    // 设置state的响应式
    this.state = _Vue.observable(state)
    /* 
      此处不直接 this.getters = getters,是因为下面的代码中要方法 getters 中的 key
      如果这么写的话,会导致 this.getters 和 getters 指向同一个对象
      当访问 getters 的 key 的时候,实际上就是访问 this.getters 的 key 会触发 key 属性的 getter
      会产生死递归
    */
    this.getters = Object.create(null)
    Object.keys(getters).forEach(key => {
      Object.defineProperty(this.getters, key, {
        get: () => getters[key](state)
      })
    })

    // 私有属性
    this._mutations = mutations
    this._actions = actions
  }

  commit (type, payload) {
    this._mutations[type](this.state, payload)
  }

  dispatch (type, payload) {
    this._action[type](this, payload)
  }
}
使用模拟实现的 Vuex
import Vuex from '../myvuex'
// 注册插件
Vue.use(Vuex)

项目地址

相关文章

  • Vuex模拟实现

    实现思路 实现install方法vuex是vue的一个插件,所以和模拟VueRouter类似,先实现Vue插件约定...

  • Vuex 状态管理

    Vue组件间通信方式 Vuex核心概念和基本使用 购物车案例 模拟实现vuex 一、组件内的状态管理流程 状态管理...

  • Vue开发三大件|轮播图&分页器&日历

    swiper+vuex+mock实现轮播图功能 mockjs模拟数据 安装依赖包mockjs在public文件夹中...

  • vuex

    Vuex介绍: Vuex官网:http://vuex.vuejs.org/ Vuex是实现数据状态管理的技...

  • Vuex

    1.Vuex概述 2.Vuex基本使用 3.使用Vuex完成todo案例 1.Vuex概述 Vuex是实现组件全局...

  • 通过Vuex实现Input双向绑定

    通过Vuex实现Input的双向绑定 安装Vuex 引入Vuex 新建store.js 页面中绑定

  • Vuex(三) —— 纯手写一个超简单的Vuex

    目录 分析Vuex的功能 下载模板 分析模块结构 实现install函数 实现Store类 替换vuex 前面学了...

  • VUEX

    目标 能够说出VUEX的基本使用步骤 能够说出vuex的核心概念 能够基于vuex实现业务功能 目录 vuex概述...

  • vuex状态管理工具的使用

    vuex使用介绍 使用步骤 下载vuex: npm i vuex -S 创建store实例, 实现数据管理 sto...

  • 手写Vuex源码

    Vuex源码实现 1. Vuex核心概念State,Getters,Mutations, Actions, Mod...

网友评论

      本文标题:Vuex模拟实现

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