第十八单元(单向数据流 vuex状态管理)

#课程目标

1.理解什么是数据管理模式

2.什么是vuex

3.什么时候使用vuex

4.vuex安装及工作原理

5.vuex语法

#知识点

1.首先来看下图示例,当我们想实现A->D组件的通信时 需要A先跟B通信,B跟C通信,C再跟D通信,过程很繁琐,数据传输很麻烦。

graph LR;
A组件-->B组件
B组件-->C组件
C组件-->D组件
 

而下图则是最简单的数据管理模式,也就是说A可以跟一个store进行通信,而同时D也跟store进行通信,达到目的。

graph LR;
A组件-->store
B组件
C组件
D组件-->store
 

2.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 3.如果应用够简单,最好不要使用 Vuex。一个简单的 global event bus 就足够所需了。如果需要构建是一个中大型单页应用,很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。

#4.安装vuex npm i vuex -s

此时你的项目目录结构应该是这样的

│  App.vue
│ main.js

├─assets
│ logo.png

├─components
│ HelloWorld.vue

├─router
│ index.js

└─store
index.js
 

#5.store下index.js中的内容

import Vue from 'vue'
import Vuex from 'vuex' //挂载Vuex
Vue.use(Vuex) //创建VueX对象
const store = new Vuex({
state: {
name: 'zhongxue',
age: 26
},
getters: {
personInfo(state) {
return `My name is ${state.name}, I am ${state.age}`;
}
}
mutations: {
SET_AGE(state, age) {
state.age = age
}
},
actions: {
nameAsyn(store) {
setTimeout(() => {
store.commit('SET_AGE', 18);
}, 1000);
}
}
}) export default store
 

#(1) state使用方法

state 仓库存放状态的对象

#(2) Mutations使用方法

mutations方法都有默认的形参:([state] [,payload])

state是当前VueX对象中的state payload是该方法在被调用时传递参数使用的

#(3) Getters使用方法

可以对state中的成员加工后传递给外界,Getters中的方法有两个默认参数

state 当前VueX对象中的状态对象 getters 当前getters对象,用于将getters下的其他getter拿来用

#(4) actions使用方法

由于直接在mutation方法中进行异步操作,将会引起数据失效。所以提供了Actions来专门进行异步操作,最终提交mutation方法。

Actions中的方法有两个默认参数

context 上下文(相当于箭头函数中的this)对象 payload 挂载参数

#6.将store挂载到当前项目的Vue实例当中去

//打开main.js
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store' Vue.config.productionTip = false new Vue({
el: '#app',
router,
store, //store:store 和router一样,将我们创建的Vuex实例挂载到这个vue实例中
render: h => h(App)
})
 

#7.在组件中使用Vuex

<template>
<div id='app'>
name:<h1>{{ $store.state.name }}</h1>
</div>
</template>
 

#8.vuex内部对象的工作原理

#授课思路

#案例作业

完成一个todolist 通过仓库

vue第十八单元(单向数据流 vuex状态管理)的更多相关文章

  1. 前端技术之:如何在vuex状态管理action异步调用结束后执行UI中的方法

    一.问题的起源 最近在做vue.js项目时,遇到了vuex状态管理action与vue.js方法互相通信.互操作的问题.场景如下图所示: 二.第一种解决方法 例如,我们在页面初始化的时候,需要从服务端 ...

  2. react第十八单元(redux中间件redux-thunk,redux工程目录的样板代码,规范目录结构)

    第十八单元(redux中间件redux-thunk,redux工程目录的样板代码,规范目录结构) #课程目标 中间件:中间件增强redux的可扩展性,实现功能复用的目的. redux-thunk异步逻 ...

  3. 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI

    一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...

  4. 前端Vue框架-vuex状态管理详解

    新人报道!多多关照-多提宝贵意见 谢谢- vuex理解 采用集中式存储管理模式.用来管理组件的状态,并以自定义规则去观测实时监听值得变化. 状态模式管理理解 属性 理解 state 驱动应用的数据源 ...

  5. vue 通信:父子通信、兄弟通信、跨多层通信、vuex状态管理

    之前简单做了一次vue通信方法的培训,在此记录一下培训的内容. 关于vue通信,大家最先想到的方法应该是props.ref.$emit.$parent,还有vuex,因为这也是我在项目中最常用到的方法 ...

  6. Vuex 状态管理的工作原理

    Vuex 状态管理的工作原理 为什么要使用 Vuex 当我们使用 Vue.js 来开发一个单页应用时,经常会遇到一些组件间共享的数据或状态,或是需要通过 props 深层传递的一些数据.在应用规模较小 ...

  7. vuex状态管理-数据改变不刷新

    困惑: 在页面初始化的时候,我提交到vuex状态管理,然后在获取的时候获取不到,我找到了出错的地点,并进行了修改,然后可以获取到状态 但是不知道原因? 定义了如下的state const state ...

  8. vuex状态管理demo

    vuex状态管理主要包含四个概念  mapState,mapMutations,mapGetters,mapActions. 编写vuex文件夹下面的store.js import Vue from ...

  9. VueX状态管理器 的应用

    VueX状态管理器 cnpm i vuex axios -S 1 创建Vuex 仓库 import Vue from 'vue' import Vuex from 'vuex' vue.use(Vue ...

随机推荐

  1. ELK---- Elasticsearch 使用ik中文分词器增加拓展热词

    进入到我们ik分词器安装目录下的config目录 cd /usr/local/myapp/elasticsearch-6.4.3/plugins/ik/configvi IKAnalyzer.cfg. ...

  2. NOIP2012 解题报告

    TG Day1 T3 开车旅行 1. 预处理出从每座城市两人分别会到达的两座城市. 用 set 可以轻松实现. 2. 用倍增优化 DP 令 \(f_{i,j,k}\) 表示从城市 \(j\) 出发,行 ...

  3. 安装kibana7.7.0

    ELK·Elastic Stack Elastic Stack就一套日志分析系统,前身叫ELK. E:Elasticsearch L:Logstash,日志收集系统 K:Kibana,数据可视化平台 ...

  4. Java基础教程——Lambda表达式

    Lambda表达式 Java8引入Lambda表达式,可以使代码更简洁. 格式:参数,箭头,代码 (参数名)->{代码} Lambda表达式体现了"函数式编程思想"-- 面向 ...

  5. c语言版单链表

    1 //c语言单链表 2 #include <stdio.h> 3 #include <stdlib.h> 4 typedef struct Node 5 { 6 int da ...

  6. 【mq读书笔记】mq producer启动流程

    创建MQClientInstance实例.这里有个实例缓存 clienrId为客户端IP+instance+(unitname)注意到之前把instance替换为进程id,是为了instance为默认 ...

  7. 流量控制--6.Classful Queuing Disciplines (qdiscs)

    Classful Queuing Disciplines 可以使用classful qdisc的代理来解锁Linux流量控制的灵活性和控制力.classful qdisc可以附加过滤器,允许将报文重定 ...

  8. 15_Android文件读写操作

    1. 文件的基本操作 File类的相关技巧和操作:文件的创建.重命名和删除,文件夹的创建和删除等操作. 1 package control; 2 3 import java.io.File; 4 5 ...

  9. 使用Verilog搭建一个单周期CPU

    使用Verilog搭建一个单周期CPU 搭建篇 总体结构 其实跟使用logisim搭建CPU基本一致,甚至更简单,因为完全可以照着logisim的电路图来写,各个模块和模块间的连接在logisim中非 ...

  10. Java MQTT 客户端之 Paho

    Paho 自动重连后订阅的主题会清空,所以需要实现 MqttCallbackExtended 接口,在 connectComplete 方法添加订阅主题:而不是实现 MqttCallback 接口 一 ...