store.js文件中定义各个访问状态和方法

  1. import Vue from "vue"
  2. import Vuex from "vuex"
  3.  
  4. Vue.use(Vuex)
  5.  
  6. const state = { //定义访问状态对象
  7. count : 44
  8. }
  9.  
  10. const mutations = { //定义触发状态对象方法,传入state整个对象
  11. jia(state) {
  12. state.count ++
  13. }
  14. }
  15.  
  16. const getters = { //类似计算属性,对state的数据进行复杂的逻辑计算,使用return返回结果
  17. count : function (state){
  18. return state.count += 100
  19. }
  20. }
  21.  
  22. const actions = { //异步执行方法,传入参数context,等同于整个store
  23. jianplus (context) {
  24. context.commit("jia",10) //调用mutations中的方法并传参
  25. }
  26.  
  27. testplus ({commit}) { //简写方式,使用{} 单独传入mutations对象
  28. commit(‘jian’) //调用mutations中的方法
  29. }
  30.  
  31. three({commit,dispatch}){ //使用dispatch调用actions的方法
      return dispatch('testplus').then(()=>{
        commit('jianplus')
      })
    }
  32. },
  33.  
  34. Const moduleA = { //定义一个模块,引入各个状态对象或方法
  35. state,
  36. mutations,
  37. getters,
  38. actions
  39. }
  40.  
  41. export default new Vuex.Store ({ //没有使用模块时的写法
  42. state,
  43. mutations
  44. gettrts
  45. actions
  46. })
  47.  
  48. // export default new Vuex.Store ({ //使用模块时的写法
  49. // modules : {
  50. // a : moduleA //引入定义模块
  51. // }
  52. // })

一、state   定义访问状态  定义的是常量

如何在HTML中访问:当未引入 mapState时,可通过$store去访问    引入时按照正常的变量使用

  1. <h1>{{$store.state.count}}</h1> //通过$store去访问

在vue文件中的定义:在计算属性computed位置进行引用,使用mapState

  1. import {mapState } from Vuex //引入 mapState
  2. export default {
  3. name: 'test',
  4.  
  5. data: () => ({
  6. test: '',
  7. }),
  8.  
  9. methods: {
  10.  
  11. },
  12.  
  13. // computed: mapState([ //直接使用state中定义的count 注意这里是一个数组
  14. // "count"
  15. // ])
  16.  
  17. computed: mapState({ //对state中定义的count做运算后再使用 注意这里是一个对象
  18. count : state => state.count+1 })
  19.  
  20. }

二、mutations   定义触发访问状态的方法    触发方法为同步执行

如何使用:跟事件触发方法一样跟在各种事件之后,通过commit方法触发

  1. <button type="button" @click="$tore.commit(“jia”)"></button>

如何传参:括号内第一个值为方法名,后面为传入参数,传入的参数可以为一个对象

  1. <button type="button" @click="$tore.commit(“jia”,10)"></button>

在vue文件中的定义:在定义方法methods位置进行引用,使用mapMutations

  1. import {mapState,mapMutations} from Vuex //引入 mapMutations
  2. export default {
  3. name: 'test',
  4.  
  5. data: () => ({
  6. test: '',
  7. }),
  8.  
  9. methods:mapMutations([ //定义mutations中的各个方法
  10. jia’,
  11. jian
  12. ])
  13.  
  14. computed: mapState({ //对state中定义的count做运算后再使用
  15. count : state => state.count+1
  16. })
  17. }

三、getters      类似于计算属性  一般在对访问状态内的数据做复杂运算时使用

在vue文件中的定义:在计算属性computed位置进行引用,使用mapGetters

  1. computed : { //vue文件中只能有一个computed,同时定义state时,需要改变写法
  2. ...mapState ({ //注意使用...
  3. "count”
  4. }),
  5.  
  6. count () { //调用getters中的count方法,将值return出去
  7. return this.$store.getters.count
  8. }

简化写法:引入mapGetters

  1. import {mapState,mapMutations,mapGetters} from Vuex //引入 mapGetters
  2. export default {
  3. name: 'test',
  4.  
  5. data: () => ({
  6. test: '',
  7. }),
  8.  
  9. methods:mapMutations([ //定义mutations中的各个方法
  10. jia’,
  11. jian
  12. ])
  13.  
  14. computed : { //vue文件中只能有一个computed,同时定义state时,需要改变写法
  15. ...mapState ({ //注意使用...
  16. "count”
  17. }),
  18.  
  19. ...mapGetters([ //调用getters中的count
  20. "count
  21. ])
  22. }
  23. }

四、actions   异步触发方法

在vue文件中的定义:在定义方法methods位置进行引用,使用mapActions   也可以通过dispatch方法触发

  1. import {mapState,mapMutations,mapGetters,mapActions} from Vuex //引入 mapActions
  2. export default {
  3. name: 'test',
  4.  
  5. data: () => ({
  6. test: '',
  7. }),
  8.  
  9. methods:{
  10. ...mapMutations([
  11. jia’,
  12. jian
  13. ]),
  14.  
  15. ...mapActions([ //引入actions中定义的jiaplus方法
  16. jiaplus
  17. ])
  18. }
  19.  
  20. computed : {
  21. ...mapState ({
  22. "count”
  23. }),
  24.  
  25. ...mapGetters([
  26. "count
  27. ])
  28. }
  29. }
  1. <button type="button" @click="$tore.dispatch(“jiaplus”)"></button>
  1. dispatch代表的是actions的整个对象,我们可以通过在其中一个actions中传入dispatch触发其他的actions方法,会有一个返回值
  1. actions: {
  2. actionA ({ commit }) {
  3. return new Promise((resolve, reject) => {
  4. setTimeout(() => {
  5. commit('someMutation')
  6. resolve()
  7. }, 1000)
  8. })
  9. },
  10.  
  11. actionB ({ dispatch, commit }) {
  12. // 组合,传入dispatch 调用actions的其他方法
  13. return dispatch('actionA').then(() => {
  14. commit('someOtherMutation')
  15. })
  16. }
  17. }
  1.  

五、modules  模块组   当有多个store对象时使用


关于Vuex的初步使用的更多相关文章

  1. 对Vuex的初步了解

    文章转载于:http://www.cnblogs.com/wisewrong/p/6344390.html 在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props ...

  2. Vue全家桶(Vue-cli、Vue-route、vuex)

    摘要 学习本篇之前要具备一定的vue基础知识,可以先看一下Vue基础(环境配置.内部指令.全局API.选项.内置组件) 1.Vue-cli Vue-cli是vue官方出品的快速构建单页应用的脚手架,这 ...

  3. Vuex入门(5)—— 为什么要用Action管理异步操作

    Action 类似于 mutation,不同在于: 1.Action 提交的是 mutation,而不是直接变更状态. 2.Action 可以包含任意异步操作. 官方给的定义我没什么意见,事实上我通过 ...

  4. [vuex]——使用vuex解决模块间传值问题

    二月的第四个周末,在家.受寒流的影响,深圳天气持续冰冻了好几天,天冷人就变得懒动,迷迷糊糊睡到了快十点,终于在饥饿的催促下起床. 和妹子吃完粥后,百无聊赖.透过窗户,发现太阳依旧没有露头的打算,我们也 ...

  5. 关于vuex的理解

    刚开始学vue的时候,看到很多项目都有用vuex,抱着一种好奇的心态去看下vuex的官方文档,如下: Vuex官方文档 Vuex 是什么?Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...

  6. 关于vuex

    希望初学者可以初步理解vuex的日志: 示意图: 一.图例: 1.Vue Components:Vue组件.HTML页面上,负责接收用户操作等交互行为,执行dispatch方法触发对应action进行 ...

  7. 实现一个简易版的vuex持久化工具

    背景 最近用uni-app开发小程序项目时,部分需要持久化的内容直接使用vue中的持久化插件貌似不太行,所以想着自己实现一下类似vuex-persistedstate插件的功能,想着功能不多,代码量应 ...

  8. vue 快速入门 系列 —— 初步认识 vue

    其他章节请看: vue 快速入门 系列 初步认识 vue vue 是什么 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架. 所谓渐进式,就是你可以一步一步.有阶段 ...

  9. 初步认识微前端(single-spa 和 qiankun)

    初步认识微前端 微前端是什么 现在的前端应用,功能.交互日益复杂,若只由一个团队负责,随着时间的推进,会越来越庞大,愈发难以维护. 微前端这个名词,第一次提出是在2016年底.它将微服务(将单一应用程 ...

随机推荐

  1. react看这篇就够了(react+webpack+redux+reactRouter+sass)

    本帖将对一下内容进行分享: 1.webpack环境搭建: 2.如何使用react-router: 3.引入sass预编译: 4.react 性能优化方案: 5.redux结合react使用: 6.fe ...

  2. C# .net中json字符串和对象之间的转化方法

    http://blog.csdn.net/xuexiaodong009/article/details/46998069 json作为作为一种最常用的数据,应用很广泛,在.net中如何把一个对象转化为 ...

  3. 解决CUICatalog: Invalid asset name supplied问题

    这个问题其实是老问题,产生原因就是因为在使用的时候 [UIImage imageNamed:]时,图片不存在或者传入的图片名为nil.

  4. 深入浅出Android之学习笔记

    1.查看启动log [2011-01-11 14:44:21 - BMI] Android Launch! [2011-01-11 14:44:21 - BMI] adb is running nor ...

  5. 学习整理与细化(1)——Internet 的域名系统(domain name system)

    2015-09-20 整理人:承蒙时光 如有错误欢迎指教O(∩_∩)O谢谢 1.作用:提供主机符号符名与IP地址之间转换服务也称域名服务: 2..域名系统的层次型结构命名机制(服务器地址): 计算机名 ...

  6. mysql启动日志文件log_bin

    今天正在无所事事的时候,突然收到需要我打开mysql的log_bin,当时我就懵逼了...不多说别的,我连这个log_bin在哪里,怎么知道是否启动了都不知道,怎么去做? 在万分纠结下,查询了很多资料 ...

  7. c语言贪吃蛇详解4.食物的投放与蛇的变长

    c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...

  8. Canvas-图片旋转

    Canvas-图片旋转 众所周知canvas是位图,你可以在里面渲染你要的东西,不过你只能操作canvas的属性来进行编辑.就是说你并不能操作画进canvas的东西,例如我在canvas里添加一幅画, ...

  9. 开启 TLS 1.3 加密协议,极速 HTTPS 体验

    随着互联网的发展,用户对网络速度的要求也越来越高,尤其是目前在大力发展 HTTPS 的情况下,TLS 加密协议变得至关重要.又拍云在 HTTPS 的普及和性能优化上,始终做着自己的努力和贡献.2018 ...

  10. 移动web开发之touch事件

    前面的话 iOS版Safari为了向开发人员传达一些特殊信息,新增了一些专有事件.因为iOS设备既没有鼠标也没有键盘,所以在为移动Safari开发交互性网页时,常规的鼠标和键盘事件根本不够用.随着An ...