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. Visual Studio Code (VSCode) 配置 C/C++ 开发编译环境

    前言 工作多年,突然发现很多C++的基础都忘记了,加之C++不断更新换代后的各种新特性,于是想重拾C++的基础学习.虽然现在工作都是Linux平台,但考虑到个人方便,自己也仅仅想重温语法,家里家外都可 ...

  2. windows下将Anaconda移位置(C盘转移至D盘)

    1.首先说明一下我的安装情况: (1)Window10系统 (2)Anaconda安装在C盘 2.由于Anaconda安装在C盘经常会涉及权限问题,在安装torch的时候让我萌发了转移磁盘的想法(拒绝 ...

  3. PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台

    为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象. 虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱. 根据常见开发需要,数据 ...

  4. 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!

    Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...

  5. Java基础之(六):变量、运算符与JavaDoc

    变量.常量 一.变量的命名规范 首字母只能以字母(A-Z或者a-z)或者美元符($)或者下划线(_)开头,不能以数字开头,首字母之后只能跟字母(AZ或者az)或者数字,不能跟美元符或者下划线 源码 p ...

  6. fastjson及其反序列化分析--TemplatesImpl

    fastjson及其反序列化分析 源码取自 https://www.github.com/ZH3FENG/PoCs-fastjson1241 参考 (23条消息) Json详解以及fastjson使用 ...

  7. .NET 分布式系统架构(有转载部分)

    一.设计目的 搭建一个大型平台需要综合考虑很多方面,不单纯是软件架构,还包括网络和硬件设备等.由于现代大部分应用建设都面临用户多.高并发.高可用的需求,传统软件架构已不能满足需求,需要支持分布式软件架 ...

  8. 我们一起来回顾一下Synchronized关键字吧

    多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...

  9. 安装多个版本的MySQL

    安装多个版本的MySQL 之前在PC机上安装了 MySQL 5.5 后续发现了窗口函数,而窗口函数是 MySQL8 以后才支持的,故在本地又安装了一个 MySQL 8 安装MySQL 5.5 进入my ...

  10. Scrum Meeting 1补充会议

    日期:2021年04月24日 会议主要内容概述: 本次会议于11:30举行,对项目架构做出了重要调整,并根据该调整修改了第1次例会报告中后两日计划完成的工作部分. 一.架构调整 会上讨论了用户模块相关 ...