1、什么是vuex?
    公共状态管理;解决多个非父子组件传值麻烦的问题;简单说就是多个页面都能用Vuex中store公共的数据
    a、并不是所有的数据都要放在Vuex中,只有各个组件公用的一些数据会放在Vuex当中
    b、Vuex是一个公共状态管理模式 并不是数据库 所以不可能持久保存一些数据
      当用户刷新浏览器的时候那么数据就有可能消失
    c、Vuex主要应用在大型的单页面开发中
2、vuex的特点
    1、遵循单向数据流
    2、Vuex中的数据是响应式的 
3、vuex的流程图:
  
4、vuex的具体使用:
    一、 使用vuex:
      1、安装: yarn add vuex
      2、使用插件(创建仓库): 存放所有组件内的数据(传的值)
          新建index.js: 
          import Vue from "vue";
import Vuex from "vuex";
import axios from "axios";
Vue.use(Vuex);
const store = new Vuex.store({
//配置项(vuex中5个属性,这里只说三个)
//公共仓库,储存数据
state:{
n:10
},
//处理异步函数和业务逻辑,里面的参数都是函数
actions:{ },
//主要用来修改state中的数据
mutations:{ }
})
export default store;
      3、将仓库挂载到vue的实例身上:
 

 main.js:
import store from "./store/";
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
//挂载完成后,vue实例中增加了$store,即可通过this.$store来访问store对象的各种属性和方法
这个可以拿到store中数据,就可以在组件中进行页面的渲染 {{this.$store.state.n}} //100 --->state--->components

    二、vuex数据传递流程:

 如果组件中想要修改state中数据的值:

                                    <template>
<div class="hello">
<h2>home</h2>
<h3>{{this.$store.state.n}}</h3>
<button @click="handleClick()">修改</button>
</div>
</template>
你可能会想到在methods:{}中写handleClick函数修改,但这样是不行的。
原因:违反了vuex单向数据流的特点。 在当前组件中修改公共仓库state的值后,所有组件页面上的值都改变了,
如果程序出现错误,错误会无法捕获。
所以要遵循vuex的特点数据传递流程进行修改。
 
---> components--->actions   

                methods:{
handleClick(){
this.$store.dispatch("handleAdd") //通过dispatch调用actions里的方法
}
}
actions:{
handleAdd(){
console.log("actions里的方法被调用了")
}
}
---> actions ---> mutations

                actions:{
handleAdd({commit},params){ //第一个参数是个对象,解构赋值拿到对象中的commit;第二个参数是传递给mutations的参数
commit("handlMutationseAdd") //通过commit调用 mutations里的方法
}
}
mutations:{
handlMutationseAdd(state,params){ //vuex中state属性 params:commit触发时,传递过来的数据
console.log("mutations被调用了",params)
state.n++;
console.log(state.n)
}
}
到此组件修改state中的数据完成,点击一次修改按钮n加1
接着页面上的数据重新进行了渲染----符合了vuex的特点数据是响应式的

5、总结下vuex数据传输流程

    1、通过new Vuex.Store()创建一个仓库 state是公共的状态,state--->components渲染页面
    2、在组件内部通过this.$store.state.属性 来调用公共状态中的state,进行页面的渲染。
    3、当组件需要修改数据的时候,必须遵循单向数据流。通过this.$store.dispatch来触发actions中的方法
    4、actions中的每个方法都会接受一个对象 这个对象里面有一个commit方法,用来触发mutations里面的方法
    5、mutations里面的方法用来修改state中的数据 mutations里面的方法都会接收到2个参数 一个是store中的state
      另外一个是需要传递到参数
    6、当mutations中的方法执行完毕后state会发生改变,因为vuex的数据是响应式的 所以组件的状态也会发生改变

vuex介绍和vuex数据传输流程的更多相关文章

  1. vue2.0 axios封装、vuex介绍

    一.前言 博主也是vue道路上的行者,道行不深,希望自己的东西能对大家有所帮助.这篇博客针对 了解过vue基础,但是没有做过vue项目的童鞋.如果想看基础指令,可以看我之前的一篇博客,请点击  跳转, ...

  2. vuex介绍

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

  3. vuex 介绍

    vuex是为vue.js开发的状态管理模式,负责vue的状态管理,状态管理是干啥的呢,举个栗子,比如一个酒店,哪间屋子入住了客人,哪间屋子客人退房了,客人退房后,房间有没有清扫过,这些都需要去记录,以 ...

  4. 手摸手教你在vue-cli里面使用vuex,以及vuex简介

    写在前面: 这篇文章是在vue-cli里面使用vuex的一个极简demo,附带一些vuex的简单介绍.有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家. 本文首发于我的个人 ...

  5. vuex基础(vuex基本结构与调用)

    import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const modulesA = { state:{//状态 count: ...

  6. vuex教程,vuex使用介绍案例

    1.demopageaction: import Vue from "vue"; import Store from "../../store.js"; imp ...

  7. vuex介绍--一篇看懂vuejs的状态管理神器

    原文,请点击此链接http://www.ituring.com.cn/article/273487

  8. Linux--网络基础(概念+协议的了解+OSI七层模型,TCP/IP五层协议,网络数据传输流程)

    网络的发展 网络的发展有下面几个阶段: 独立模式:计算机最开始是以单机模式被广泛使用的.每一台计算机都是独立的,之间不能够进行数据共享与通信 网络互联: 计算机之间可以链接在一起,完成数据共享,计算机 ...

  9. 个人介绍和Github使用流程

    我叫石莉静,来自网络工程143班,学号1413042067 我的兴趣爱好有看电影.动漫,听音乐,摄影,寻找美食等等. 个人编程能力:非常真诚的说,我的编程能力蛮差的,用C++写过一共写过...(很少很 ...

随机推荐

  1. Markers

    immune pdf(file = paste0(outdir,"T_B_NK_feature.pdf")) VlnPlot(expr_1_4,features = c(" ...

  2. vsCode格式化插件

    ESlint:是用来统一JavaScript代码风格的工具,不包含css.html等. 背景 近来研究前端,然后一直在百度上找VScode格式化(ESlint)的插件,结果找了半天都不靠谱.目前没有一 ...

  3. Servlet的常见错误

    Servlet常见的错误: 1.404错误:资源未找到 原因一:在请求地址中的servlet的别名书写错误. 原因二:虚拟机项目名称拼写错误. 2.500错误:内部服务器错误 错误一: java.la ...

  4. LINK : fatal error LNK1104: 无法打开文件“qtmaind.lib”

    LINK : fatal error LNK1104: 无法打开文件"qtmaind.lib" VS2019+QT5.13出现该问题,可以尝试这样解决. 1.找打qtmaind.l ...

  5. JS关于this指向的小练习

    请阅读以下代码:var obj = {};obj.log = console.log;obj.log.call(console, this)该代码在浏览器中执行,输出的日志结果是什么? 这道题就是问c ...

  6. Eclipse设置保存时自动格式化代码

    在使用eclipse时,经常需要使用到Ctrl+Shift+F来格式化代码,可以打开保存时格式化,会更方便. 打开方式:Window-->Preferences-->Java --> ...

  7. fiddler之入门(安装配置)

    在工作中常常需要进行数据的抓包和发包,此时就可以用到fiddler这个工具了. fiddler是一个http协议调试代理工具,通过http代理,让数据从其通过,来坚挺本地计算机与访问网络之间的所有ht ...

  8. SAP简介

    1. 什么是SAP SAP的英文全名为System Application and Products in Data Processing.SAP既是公司名称,又是其产品的软件名称. 2. SAP的诞 ...

  9. 别把&和nohup混为一谈, 根本不是同一个东西好不好 ------ 聊聊./a.out & , nohut ./a.out , nohup ./a.out &的区别

    在第一家公司工作的时候, 我认识了&,在第二家公司工作的时候, 我认识了nohup,  这就是渊源.  随后, 我就一直糊涂用他们, 但并不懂这两个东西. 网上很多地方是乱扯, 瞎复制, 为什 ...

  10. 解决Pip install Pillow 失败问题

    当我在使用Django一个上传图片功能的时候, Django 提示我安装 Pillow这个图片处理的库, 当我尝试安装的时候. 总是提示安装失败 报如下错误. v = self._sslobj.rea ...