前言
vuex是什么?
官网解释Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
我的理解就是vuex是一个管理者,管理的方式是集中式管理,管理的对象即是vue.js应用程序中的众多组件的共享部分。
正文
3.实现功能
兄弟组件之间的调用和改变—借鉴案例https://www.jianshu.com/p/d109e16d5f9a
全文共7章,(写的很全很容易理解)
4.详细代码如下
1、cnpm install vuex --save
import Vue from 'vue'
import Vuex from 'vuex'//引入vuex
import news from './modules/new'//引入tab模块代码
import tabVuex from './modules/tabvuex'//引入news模块代码
import getters from './getters'//规范变量的文件
Vue.use(Vuex); //使用 vuex
const store = new Vuex.Store({//创建vuex中的store对象
getters,
modules:{
news,tabVuex
}
})
export default store
import Vue from 'vue'
import App from './App'
import store from './store'//主要代码
import axios from "axios";//配置axios请求
Vue.config.productionTip = false
axios.defaults.withCredentials = true
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,'//主要代码
render: h => h(App)
})
总票数2:{{sumCount}}
import axios from "axios";
const tabVuex = {
state: {
tagList: []
},
mutations: {
SET_TAGLIST(state, v) {//这里的state即是上面定义的state常量
state.tagList = v;
}
},
actions: {
getTaglist: (context) => {
axios.get("/static/list.json").then(data => {
context.commit('SET_TAGLIST', data.data);
});
}
}
}
export default tabVuex
sss
总票数:{{nodeVoteCount+vueVoteCount}}
总票数2:{{sumCount}}
票数:{{nodeVoteCount}}
-------
票数:{{vueVoteCount}}
更多的vuex
const news = {
state: {
nodeVoteCount: 0,//node的初始票数
vueVoteCount: 1,//vue的初始票数
},
mutations:{
ADD_NODE(state) {
state.nodeVoteCount++
},
ADD_VUE(state, num = 2) {
state.vueVoteCount += num
},
}
}
export default news
const getters = {
sumCount:state=> state.news.nodeVoteCount+state.news.vueVoteCount,
nodeVoteCount:state=> state.news.nodeVoteCount,
vueVoteCount:state=> state.news.vueVoteCount,
tagList:state=> state.tabVuex.tagList,
}
export default getters
computed:mapState({
vueVoteCount:state=>state.vueVoteCount,
nodeVoteCount:state=>state.nodeVoteCount
})
简化为:
computed: {
...mapState(['nodeVoteCount','vueVoteCount']),
...{
// 在这里写vue文件的本身的计算属性
}
},
methods:{
...mapMutations(["ADDVUEVOTE","ADDVUEVOTE"]),
...{
//写自己定义的方法
}
},
cread(){
this.ADDVUEVOTE()
}
actions: {
getTaglist: (context) => {
axios.get("/static/list.json").then(data => {
发请求调取值,给mutations的方法赋值
context.commit('SET_TAGLIST', data.data);
});
}
}
*使用 this.$store.dispatch(“getTagList”);调用;也可简写为
...mapActions(["getTagList"])
注:
取值:$store.state
赋值: $store.commit
调取方法: $store. dispatch