import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex); const modulesA = {
state:{//状态
count:100
},
getters:{//状态计算
addStr(state){
return state.count + '状态计算';
}
},
mutations:{
addNum(state,payload){//同步增加count数量
state.count += payload.count;
},
deleteNum(state,payload){//同步减少count数量
state.count -= payload.count;
}
},
actions:{
asyncAddNum({commit}){//模拟请求之后增加count数量
setTimeout(() => {
commit('addNum',{
count:1
})
},1000);
},
asyncDeleteNum({commit}){//模拟请求之后,减少count数量并返回Promise对象进行下一步回调操作
return new Promise((resolve,reject) => {
setTimeout(() => {
commit('deleteNum',{
count:10
});
resolve();
},1000);
});
},
async asyncDeleteAdd({commit,dispatch}){//模拟先请求其他actions请求,请求成功之后并在增加count数量
await dispatch('asyncDeleteNum').then(() => {
console.log('先异步减去10在回调加300');
});
commit('addNum',{
count:300
})
}
}
} const modulesB = {
state:{
count:200
}
} const vuexStore = new Vuex.Store({
modules:{
modulesA:modulesA,
modulesB:modulesB
}
}); export default vuexStore;
<template>
<div>
<span>测试</span>
<div>
<h3>state:{{getState}}</h3>
<h3>getters:{{getGetters}}</h3>
</div>
<div>
<button @click="addNum">同步提交mutations</button>
<!-- <button @click="addNum({count:10})">同步提交mutations</button>用mapMutations引入的mutations在调用这个方法的时候传参 -->
<button @click="asyncAddNum">异步请求actions</button>
<button @click="asyncDeleteNum">多个actions异步请求actions</button>
<button @click="asyncDeleteAdd">先异步在同步</button>
</div>
</div>
</template> <script> import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'; export default {
name: 'vuexDemo',
data(){
return { }
},
computed:{
getState(){//获取状态
return this.$store.state.modulesA.count;
},
getGetters(){//获取状态计算
return this.$store.getters.addStr;
},
...mapState({
messageOne: state => state.modulesA.count,
}),
...mapGetters([
'addStr'
])
},
methods:{
addNum(){
this.$store.commit('addNum',{count:10});
},
asyncAddNum(){
this.$store.dispatch('asyncAddNum');
},
asyncDeleteNum(){
this.$store.dispatch('asyncDeleteNum');
},
asyncDeleteAdd(){
this.$store.dispatch('asyncDeleteAdd');
},
// ...mapMutations([//mapMutations参数写在调用方法的地方
// 'addNum'
// ])
// ...mapActions([//mapActions参数也写在调用方法的地方
// 'asyncDeleteAdd'
// ])
},
created(){
console.log(this.messageOne);
console.log(this.addStr);
// console.log(this.$store.state.modulesA.count);
}
}
</script> <style> </style>

vuex基础(vuex基本结构与调用)的更多相关文章

  1. Vuex 基础

    其他章节请看: vue 快速入门 系列 Vuex 基础 Vuex 是 Vue.js 官方的状态管理器 在vue 的基础应用(上)一文中,我们已知道父子之间通信可以使用 props 和 $emit,而非 ...

  2. vuex 基础:教程和说明

    作者注:[2016.11 更新]这篇文章是基于一个非常旧的 vuex api 版本而写的,代码来自于2015年12月.但是,它仍能针对下面几个问题深入探讨: vuex 为什么重要 vuex 如何工作 ...

  3. vuex基础知识总结

    项目中要求添加vuex,根据学习我这个小白总结了一点自己的心得,供大家参考 在学习之前,要知道两件事 为什么要用vuex?vuex要什么场景下应用? 简单点解释一下 1.项目中应用了vue脚手架之后, ...

  4. Vuex基础-Mutation

    借助官网的一张图,更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.不可以直接对其进行赋值改变.需要注意的是,mutations只能做一些同步的操作. ​​​ 代码结构: ​ ...

  5. Vuex基础-Getter

    官方地址:https://vuex.vuejs.org/zh/guide/getters.html Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性).就像 ...

  6. Vuex基础-State

    官方地址:https://vuex.vuejs.org/zh/guide/state.html 由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个 ...

  7. vueX基础知识点笔记

    vuex是专门用来管理vue.js应用程序中状态的一个插件.他的作用是将应用中的所有状态都放在一起, 集中式来管理.需要声明的是,这里所说的状态指的是vue组件中data里面的属性.简单的来说, 它就 ...

  8. vuex基础详解

    vuex入门 安装 vuex为我们提供了两种使用方法 直接引入 vuex下载地址:https://unpkg.com/vuex@2.0.0 下载之后用< script >标签包裹引入即可 ...

  9. 前端vuex基础入门

    vuex简介 是一个专门为vue.应用程序开的状态管理模式 它采用集中式存储管理应用的所有组件的状态 (类似于全局变量) 并以相应的规则保证以一种可预测的方式发生改变(相应式变化) 应用场景 多个视图 ...

随机推荐

  1. WPF进阶技巧和实战03-控件(5-列表、树、网格04)

    ListView控件 ListView继承自简单的没有特色的ListBox,增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以重新构建列表. ListView类继承 ...

  2. logback日志入门超级详细讲解

    基本信息 日志:就是能够准确无误地把系统在运行状态中所发生的情况描述出来(连接超时.用户操作.异常抛出等等): 日志框架:就是集成能够将日志信息统一规范后输出的工具包. Logback优势 Logba ...

  3. Windows下node-gyp查找VS安装路径简单解析

    node-gyp的作用我已经不想赘述了,这里给一个我之前文章的链接:cnblogs看这里,知乎看这里.本文主要从源码入手,介绍node-gyp查找VisualStudio的过程 为了方便我们研究nod ...

  4. 实践篇 -- Redis客户端缓存在SpringBoot应用的探究

    本文探究Redis最新特性--客户端缓存在SpringBoot上的应用实战. Redis Tracking Redis客户端缓存机制基于Redis Tracking机制实现的.我们先了解一下Redis ...

  5. .Net Core 获取上下文HttpContext

    1.先定义一个类 using Microsoft.AspNetCore.Http; namespace BCode.Util { public class MvcContext { public st ...

  6. 创建第一个Android项目

    目录 创建第一个Android项目 创建HelloWorld项目 选择模板 选择模板界面的英文翻译 配置项目 配置项目界面英文翻译及解释 配置项目界面的注意事项 Name的命名规范 Package n ...

  7. opencv中的exp32f函数

    exp32f opencv的exp函数和cmath的exp函数在精度上存在一定差异,通过查找源码,发现了这么一段实现.代码如下: 点击查看代码 #define EXPTAB_SCALE 6 #defi ...

  8. AES解密尾部出现乱码问题

    说明 在使用AES解密的时候我发现解密出来的字符串尾部一直都有乱码 解决方案 尾部字符串的ascii码就是删除位索引 具体代码: cryptor = AES.new('AES_KEY'.encode( ...

  9. Kubernetes-Service介绍(三)-Ingress(含最新版安装踩坑实践)

    前言 本篇是Kubernetes第十篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...

  10. NX开发 刀路生成

    此段是可以生成程序的完整代码,只有从坐标(10,10,10)到(500,500,500)一根刀轨.motion_ptr->feed_value 的值为0时生成G00,非0时生成G01.此代码只有 ...