Vuex是什么
Vuex称为Vue的状态管理工具,也是多组件状态共享的工具状态: 状态就是数据
Vuex的作用
它是一个存储状态的仓库,类似:本地存储、cookie、database多个组件共享一个状态,我们称之为: ‘多组件状态共享’它还可以管理状态,这种形式我们称之为‘ 状态管理’
Vuex组成部分
Vuex的核心组成部分
state 数据的存储者,它的作用是定义数据【 状态 】actions 动作的创建者,它的作用是创建动作,然后发送动作mutations 动作的出发者,它的作用是用来修改数据 -更新视图 后端数据交互写在actions中vuex调试工具主要调试的mutationsvuex是流程化执行的,符合单向数据流思维
Vuex流程
流程1 component – dispatch --> actions – commit --> mutations – mutate --> state --> component
流程2 component – commit --> mutations – mutate --> state --> component
流程3 component – commit --> mutations – mutate --> state --> getter --> component
流程4 component --dispatch --> actions – commit --> mutations – mutate --> state --> getter --> component
Vuex基础操作流程【数据不分块】
安装vuex $ yarn add vuex在src/store/index.js
import Vuex
from 'vuex'
import Vue
from 'vue'
Vue
.use( Vuex
)
const store
= new Vuex.Store({
state:
{
count
: 0
},
actions:
increment ( { commit
}, val
) {
const action
= {
type
: INCREMENT,
val
}
commit( action
)
}
},
mutations:
{
INCREMENT ( state
,action
) {
state
.count
++
}
},
getters
: {},
modules
})
export default store
在main.js中注入
import store
from './store'
new Vue({
router
,
store
,
render
: h
=> h(App
),
}).$mount('#app')
在组件中使用
<template>
<div>
<button @click = "add"> +
</button>
<p> </p>
</div>
</template>
<script>
export default {
methods: {
add () {
this.$store.dispatch('increment',100)
}
}
}
</script>
Vuex基础操作流程【数据分块】
安装vuex $ yarn add vuex在src/store/index.js
import Vue
from 'vue'
import Vuex
from 'vuex'
import home
from '../views/home/store'
Vue
.use(Vuex
)
const store
= new Vuex.Store({
modules
:{
home
}
})
export default store
在main.js注入
import store
from './store'
new Vue({
router
,
store
,
render
: h
=> h(App
),
}).$mount('#app')
在src/views/home/store.js中打造vuex
import axios
from 'axios'
const GETMOVIES = 'GETMOVIES'
export default{
state
:{
movies
:null,
},
actions
:{
getMovies({commit
}){
axios({
url
:'/ajax/movieOnInfoList',
params
:{
token
: ''
}
}).then(res
=>{
commit({
type
:GETMOVIES,
payload
:res
.data
})
})
},
},
mutations
:{
GETMOVIES(state
,action
){
state
.movies
= action
.payload
}
}
}
在src/views/homeindex.vue中调用
辅助工具
mapActionsmapMutationsmapGettersmapStateexport default 默认导出一个export 叫批量导出,可以导出多个