vuex笔记

vuex:
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

vuex数据流:

 

src/store/index.js: 
// 创建了一个仓库实例
const store = new Vuex.Store({
 // 配置项/核心概念
 // 存储数据的地方 任何组件都可以访问
    state:{ },

// mutations 唯一能修改数据的地方
    mutations: {
        // 形参1: 上面仓库的state的数据对象
        // 形参2: 可选参数, 接受外部传入的数据
        changeNum(state, data) { }
    },

// actions 异步修改数据 间接修改
    actions: {
        // context: 上下文对象, 里面有commit和dispatch可以直接调用
        // data: 可选参数, 接受外部传入的数据
    changeNumAsync(context, data) { context.commit('changeNum', data) },

// 建立快捷访问的方式
getters: { return }
})

触发 mutations修改state数据的方式1: 
<button @click="$store.commit('changeNum', 10)">num+10</button>
方式2: 
import { mapMutations } from "vuex"
methods: { ...mapMutations(["changeNum"]) }
<button @click="changeNum(-10)">num-10</button>

异步修改数据方式1:
<button @click="$store.dispatch('changeNumAsync', 5)">异步修改num+5</button>
方式2: 
import { mapActions } from "vuex"
methods: { ...mapActions(["changeNumAsync"]) }
<button @click="changeNumAsync(-5)">异步修改num-5</button>

state访问数据方式1: $store.state.num
方式2:
import { mapState } from "vuex"
computed: { ...mapState(["num"]) }

快捷访问方式1:
<p>用户的年龄: {{ $store.getters.age }}</p>
方式2: 
import { mapGetters } from "vuex"
computed: { ...mapGetters(["userName", "age"]) }

放在计算属性computed里面的是: mapState和mapGetters
放在方法methods里面的是: mapMutations和mapActions

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值