手写vuex4源码(一)Vuex的基本使用

vuex4官方文档

一、创建vuex源码项目

1、脚手架

使用 vue-cli 创建 vue3.x 脚手架

vue create vuex-lessons

2、脚手架配置

选择babel、vuex

二、vuex的基本使用介绍

1、核心概念

在 vuex 官方文档中,核心概念共有以下五个:

  • State:状态,可以理解为 vue 组件中的 data 数据;
  • Getter:可以理解为 vue 中的 computed 计算属性;
  • Mutation:同步函数,可以同步更改状态;
  • Action:异步函数,可以执行异步操作,配合 Mutation 实现状态的异步更新;
  • Module: vuex 的模块化,能够将臃肿复杂的 store 容器进行模块化分割,每个模块拥有独立的 state、mutation、action、getter;

2、插件配置

在main.js中将store挂载到vue实例上

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'

createApp(App).use(store).mount('#app')

store/index.js

import { createStore } from 'vuex'

export default createStore({
  // strict:true,
  state: { //组件中的data
    count: 0
  },
  getters: {
    // 计算属性  vuex4并没有实现计算属性的功能
    double(state) {
      return state.count * 2
    }
  },
  mutations: {//同步更改状态
    add(state, payload) {
      state.count += payload
    }
  },
  actions: {//可以调用其他action和mutation
    asyncAdd({commit},payload) { 
      setTimeout(()=>{
        commit('add',payload)
      },1000)
    }
  },
  modules: {
  }
  // 严格模式 不建议直接使用action修改
  // dispatch(action) => commit(mutation) =>修改状态
})

3、基本使用

 {{ count }}
  -------------------
  {{ double }}
  <!-- 可以实现,如果开启了严格模式,就会报错 -->
  <button @click="$store.state.count++">错误修改</button>
  <!-- 同步修改 -->
  <button @click="add">同步修改</button>
  <button @click="asyncAdd">异步修改</button>
import { computed } from 'vue'
import { useStore } from 'vuex';
setup() {  // vue3有个compositionApi的入口
    const store = useStore();
    function add() {
      store.commit('add', 1)
    }
    function asyncAdd(){
      store.dispatch('asyncAdd',1)
    }
    return {
      count: computed(() => store.state.count),
      double: computed(() => store.getters.double),
      add,
      asyncAdd
    }
  }

在错误修改例子中,如果在store/index,js中开启了严格模式,则会报错
报错图片

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值