vuex经常让我这样的初学者摸不着头脑,刚学完vuex的我想用下面几个简单通俗的栗子来进行小小的分享vue
Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的全部组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。(vuex是以插件的方式存在的)
复制代码
并非全部的项目都适合使用vuex,vuex通常适用于大型项目。在进行大型项目开发的时候,经常会碰到多个组件须要用到同一个状态,这个时候,vuex就能派上用场,它能把组件的共享状态抽取出来,当作一个全局单例模式进行管理。这样无论你在何处改变状态,都会通知使用该状态的组件作出相应修改。
复制代码
* 安装 ---- `npm install vuex --save`
* 引入---- 以插件的方式引入,在src目录下建立一个store.js文件并在其中引入
```
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
```
复制代码
为了更加通俗易懂地理解,引入公司的概念来阐述这四大核心
复制代码
state ---- 惟一一个数据源,vuex的总仓库,存储数据 (至关于公司的CEO,掌管这公司总资产)vuex
mutations ---- 用于修改state的数据状态,而且只能在mutations中修改state的数据 状态(至关于公司的财务部门,拥有修改state的权力)npm
actions ---- 解决异步改变共享数据(至关于工做部门,向财务部门提交修改state的请求)bash
getters ---- 对state 里面的数据二次处理(对数据进行过滤相似filter的做用)异步
下图是这几个状态之间的关系图:ide
一. 在store.js中定义好如下对象
复制代码
const state = {
showSidebar: true,
}
复制代码
const mutations = {
sidebar(state, status) {
state.showSidebar = status
}
}
复制代码
const actions = {
setShowSidebar ({commit}, status) {
commit(sidebar, status)
}
}
复制代码
const getters = {
showSidebar: state => state.showSidebar
}
复制代码
最后再抛出这四个对象函数
export default {
state,
mutations,
actions,
getters
}
复制代码
二. 调用store.js中的state的值学习
<template>
<div class="sidebar" :class="{showSidebar: showSidebar}" @click="_hidebar">
</div>
</template>
复制代码
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'showSidebar'
])
}
}
复制代码
methods: {
_hidebar () {
this.$store.dispatch('setShowSidebar', false)
}
}
复制代码
...mapMutations ({}) 获取mutations中的 sidebar 方法 ,并取名叫sidebar,第3点中的 _hidebar () {this.$store.dispatch('setShowSidebar', false)}
就能够改写为 _hide () {this.sidebar(false)}
ui
...mapActions ([]) 获取actions中的setShowSidebar 方法,与this.$store.dispatch('setShowSidebar')的做用同样。this
**小提示:mapMutations中用{} mapActions中用[] **
<script>
import { mapGetters,mapMutations,mapActions } from "vuex"
export default {
computed: {
...mapGetters([
'showSidebar'
])
},
methods: {
...mapMutations({
sidebar: 'sidebar'
}),
...mapActions([
'setShowSidebar'
])
}
}
</script>
复制代码
以上是来自一只vue学习ing的大胖狗的分享,栗子是简单通俗的,如有不合理的地方请大佬们轻喷。😘
复制代码