Vue 状态管理之vuex && {mapState,mapGetters}
1 # 一、理解vuex
2 1.概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读写),也是一种组件间通信的方式,且适用于任意组件间通信。
3 2.Github地址:https://github.com/vuejs/vuex
4 # 二、什么时候使用Vuex
5 1.多个组件依赖同一状态
6 2.来自不同组件的行为需要变更同一状态
7 # 三、安装: npm i vuex@3
8 vuex@3 对应的 vue2
9 vuex@4 对应的 vue3
10 # 四、搭建vuex环境
11 // 该文件用于创建Vuex中最为核心的store,路劲(一般都放这里):src/store/index.js
12 // 引入Vuex
13 import Vue from 'vue'
14 import Vuex from 'vuex'
15
16 // 引入插件
17 Vue.use(Vuex);
18
19 // 准备actions,用于响应组件中的动作
20 const actions = {
21 jia(miniStore, value){
22 miniStore.commit('JIA', value)
23 },
24 jian(miniStore, value){
25 miniStore.commit('JIAN', value)
26 },
27 jiaOdd(miniStore, value){
28 if (miniStore.state.sum % 2){
29 miniStore.commit('JIA', value)
30 }
31 },
32 jiaWait(miniStore, value){
33 setTimeout(()=>{
34 miniStore.commit('JIA', value)
35 }, 500);
36 }
37 }
38 // 准备mutation,用于操作数据(state)
39 const mutations = {
40 JIA(context, value) {
41 context.sum += value;
42 },
43 JIAN(context, value) {
44 context.sum -= value;
45 },
46 }
47 // 准备state,用于存储数据
48 const state = {
49 sum: 0,
50 }
51
52
53 // 创建并暴露store
54 export default new Vuex.Store({
55 actions,
56 mutations,
57 state
58 });
59 # 组件部分代码
60 <template>
61 <div>
62 <h1>当前求和为:{{sum}}</h1>
63 <h1>将当前求和的值放大10倍:{{bigSum}}</h1>
64 <select v-model.number="n">
65 <option value="1">1</option>
66 <option value="2">2</option>
67 <option value="3">3</option>
68 </select>
69 <button @click="invrement">+</button>
70 <button @click="decrement">-</button>
71 <button @click="invrementOdd">当前求和为奇数再加</button>
72 <button @click="invrementWait">等一等再加</button>
73 </div>
74 </template>
75 <script>
76 import {mapState, mapGetters} from 'vuex'
77 export default {
78 name: 'Count',
79 data(){
80 return {
81 n: 1
82 }
83 },
84 computed:{
85 // sum(){
86 // return this.$store.state.sum;
87 // },
88 // bigSum(){
89 // return this.$store.getters.bigSum;
90 // },
91 // 借助mapState生成从state中来的计算数据
92 // ...mapState({sum: 'sum'}), // 代替上面的sum()
93 ...mapState(['sum']), // 数组写法
94 // 借助mapState生成从getters中来的计算数据
95 // ...mapGetters({bigSum: 'bigSum'}), // 代替上面的bigSum()
96 ...mapGetters(['bigSum']), // 数组写法
97 },
98 methods:{
99 invrement(){
100 // console.log('@', this);
101 this.$store.commit('JIA', this.n);
102 },
103 decrement(){
104 this.$store.commit('JIAN', this.n);
105 },
106 invrementOdd(){
107 this.$store.dispatch('jiaOdd', this.n);
108 },
109 invrementWait(){
110 this.$store.dispatch('jiaWait', this.n);
111 }
112 },
113 mounted(){
114
115 }
116 }
117 </script>
118 <style scoped>
119 button {
120 margin-left: 5px;
121 }
122 </style>
123
124
125 # 1.组件中渡漆vuex中的数据:$store.state.sum
126 # 2.组件中修改vuex中的数据: $store.dispatch('actions中的方法名', data) 或 $store.commit('mutations中的方法名', data)
127 # 备注:若没有网络请求或其他业务逻辑,组件中也可以越过actions,不写dispatch,直接写commit
Vue 状态管理之vuex && {mapState,mapGetters}的更多相关文章
- Vue状态管理之Vuex
Vuex是专为Vue.js设计的状态管理模式.采用集中存储组件状态它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 1.首先让我们从一个vue的计数应用开始 ...
- vue - 状态管理器 Vuex
状态管理 vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性.
- 五、vue状态管理模式vuex
一.vuex介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 即data中属性同时有一 ...
- Vue状态管理模式---Vuex
1. Vuex是做什么的? 官方解释: Vuex 是一个专为Vue.js 应用程序开发的 状态管理模式 它采用 集中式存储管理 应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化 ...
- Vue状态管理vuex
前面的话 由于多个状态分散的跨越在许多组件和交互间各个角落,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue提供了vuex.本文将详细介绍Vue状态管理vuex 引入 当访问数据对象时,一个 V ...
- vuex(vue状态管理)
vuex(vue状态管理) 1.先安装vuex npm install vuex --save 2.在项目的src目录下创建store目录,并且新建index.js文件,然后创建vuex实例,引入 ...
- vue状态管理器(用户登录简单应用)
技术点:通过vue状态管理器,对已经登录的用户显示不同的页面: 一 vue之状态管理器应用 主要用来存储cookie信息 与vue-cookies一起使用 安装:npm install vue-co ...
- 理解Vue的状态管理模式Vuex
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 状态管理模式.集中式存储管理,一听就很高大 ...
- VueX(vue状态管理)简单小实例
VueX:状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 核心模块:State. ...
随机推荐
- API 工程化分享
概要 本文是学习B站毛剑老师的<API 工程化分享>的学习笔记,分享了 gRPC 中的 Proto 管理方式,Proto 分仓源码方式,Proto 独立同步方式,Proto git sub ...
- mybatis plus 的 ActiveRecord 模式
实体类继承 Model public class Test extends Model<Test> implements Serializable {} 就可以 new Test().in ...
- CoaXPress 时间戳 Time Stamping
背景 在CXP2.0之前,CXP没有定义Time Stamping时间戳的概念,但是用户对Time Stamping是有实际需求的,比如我们要对比多台设备拍摄同一个物体不同角度的照片,或者记录触发完成 ...
- Python汉诺塔求解
1 def hanoi(n,a,b,c): 2 3 if(n>0): 4 5 hanoi(n-1,a,b,c) 6 7 print("Move disc no:%d from pile ...
- 「JOISC 2019 Day4」蛋糕拼接 3
loj 3039 NKOJ Description \(n\)个蛋糕,每个蛋糕有\(w_i,h_i\).选\(m\)个蛋糕满足\(\sum\limits_{j=1}^mw_{k_j}-\sum\lim ...
- 前端CSS3动画animation用法
前端CSS3动画animation用法 学习如下动画属性 @keyframes animation-name animation-duration animation-delay animation- ...
- Makefile基础语法
Makefile的作用 如果没有Makefile,每次修改源代码后,如果要重新编译代码,都要输入编译命令,当源代码很多时,效率很底下. 基本格式 target: componsnts TAB rule ...
- 为什么 SQL 语句使用了索引,但却还是慢查询?
一.索引与慢查询 聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引 CREATE ...
- php判断客户端浏览器类型
/** * 判断浏览器名称和版本 */ function get_user_browser() { if (empty($_SERVER['HTTP_USER_AGENT'])) { return ' ...
- word processing in nlp with tensorflow
Preprocessing Tokenizer source code:https://github.com/keras-team/keras-preprocessing/blob/master/ke ...