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

import Vue from "vue"
import Vuex from "vuex" Vue.use(Vuex) const state = { //定义访问状态对象
count : 44
} const mutations = { //定义触发状态对象方法,传入state整个对象
jia(state) {
state.count ++
}
} const getters = { //类似计算属性,对state的数据进行复杂的逻辑计算,使用return返回结果
count : function (state){
return state.count += 100
}
} const actions = { //异步执行方法,传入参数context,等同于整个store
jianplus (context) {
context.commit("jia",10) //调用mutations中的方法并传参
} testplus ({commit}) { //简写方式,使用{} 单独传入mutations对象
commit(‘jian’) //调用mutations中的方法
} three({commit,dispatch}){ //使用dispatch调用actions的方法
  return dispatch('testplus').then(()=>{
    commit('jianplus')
  })
}
}, Const moduleA = { //定义一个模块,引入各个状态对象或方法
state,
mutations,
getters,
actions
} export default new Vuex.Store ({ //没有使用模块时的写法
state,
mutations,
gettrts,
actions
}) // export default new Vuex.Store ({ //使用模块时的写法
// modules : {
// a : moduleA //引入定义模块
// }
// })

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

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

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

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

import {mapState } from ‘Vuex’       //引入 mapState
export default {
name: 'test', data: () => ({
test: '',
}), methods: { }, // computed: mapState([ //直接使用state中定义的count 注意这里是一个数组
// "count"
// ]) computed: mapState({ //对state中定义的count做运算后再使用 注意这里是一个对象
count : state => state.count+1 }) }

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

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

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

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

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

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

import {mapState,mapMutations} from ‘Vuex’       //引入 mapMutations
export default {
name: 'test', data: () => ({
test: '',
}), methods:mapMutations([ //定义mutations中的各个方法
‘jia’,
‘jian’
]) computed: mapState({ //对state中定义的count做运算后再使用
count : state => state.count+1
})
}

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

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

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

简化写法:引入mapGetters

import {mapState,mapMutations,mapGetters} from ‘Vuex’       //引入 mapGetters
export default {
name: 'test', data: () => ({
test: '',
}), methods:mapMutations([ //定义mutations中的各个方法
‘jia’,
‘jian’
]) computed : { //vue文件中只能有一个computed,同时定义state时,需要改变写法
...mapState ({ //注意使用...
"count”
}), ...mapGetters([ //调用getters中的count
"count”
])
}
}

四、actions   异步触发方法

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

import {mapState,mapMutations,mapGetters,mapActions} from ‘Vuex’       //引入 mapActions
export default {
name: 'test', data: () => ({
test: '',
}), methods:{
...mapMutations([
‘jia’,
‘jian’
]), ...mapActions([ //引入actions中定义的jiaplus方法
‘jiaplus’
])
} computed : {
...mapState ({
"count”
}), ...mapGetters([
"count”
])
}
}
<button type="button" @click="$tore.dispatch(“jiaplus”)"></button>
dispatch代表的是actions的整个对象,我们可以通过在其中一个actions中传入dispatch触发其他的actions方法,会有一个返回值
actions: {
actionA ({ commit }) {
return new Promise((resolve, reject) => {
setTimeout(() => {
commit('someMutation')
resolve()
}, 1000)
})
}, actionB ({ dispatch, commit }) {
// 组合,传入dispatch 调用actions的其他方法
return dispatch('actionA').then(() => {
commit('someOtherMutation')
})
}
}
 

五、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. Ubuntu 安装MyEclipse10

    Ubuntu 安装MyEclipse10 1.安装JDK 2.下载myeclipse.run 3.  现在假设你的 myeclipse.run 的路径是/home/yourname/myeclipse ...

  2. 树链剖分( 洛谷P3384 )

    我们有时候遇到这样一类题目,让我们维护树上路径的某些信息,这个时候发现我们无法用线段树或者树状数组来维护这些信息,那么我们就有着一种新的数据结构,树剖:将一棵树划分成若干条链,用数据结构去维护每条链, ...

  3. 《UNP》学习之TCP状态转换

    CLOSED:TCP起始状态 LISTEN:绑定端口后进入listen状态,一般是服务端 SYN_SENT:发送SYN连接请求,主动打开连接的一方进入SYN_SENT SYN_RCVD:接收到SYN连 ...

  4. Head First设计模式之装饰者模式

    一.定义 装饰者模式,英文叫Decorator Pattern,在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 动态将职责附加到 ...

  5. Fiddler工具的界面说明

    1.Fiddler界面说明 2.session的模块说明 包含部分如下: 注:标蓝色区域的内容为平时较常用的部分 3.session不同图标和不同颜色的含义 默认颜色的含义如下: 部分图标的含义如下: ...

  6. 通过window.location.search获取页面url传递的参数

    function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  7. select超链接跳转A

    客户端页面 实现 下拉菜单 跳转链接 如图 遂使用 select option来展现.开始想到添加 a标签,结果,不行.渲染不出来 搜索查询得知 如下方法实现 ================== & ...

  8. hadoop的安装和配置(三)完全分布式模式

    博主会用三篇文章为大家详细说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 完全分布式模式: 前面已经说了本地模式和伪分布模式,这两种在hadoop的应用中并不用于实际,因为几乎没人会 ...

  9. 用JAVA写一个冒泡排序

    一:实现思想: 基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要 ...

  10. python 列表(list)常用操作

    a = [1,2,3,4,1,1,1,1] 删除操作 删除元素1 a.remove(1) 删除第二个元素 del a[1] 默认删除最后一个,给脚标就会删除指定脚标元素 pop() 方法 a.pop( ...