共享
状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间的通信
当前求和为:{{num}}
vue2中,要用vuex的3版本
vue3中,要用vuex的4版本
npm i vuex@3
import Vue from 'vue'import App from './App'
//引入vue-resource插件
import vueresource from 'vue-resource'//引入store
import store from './store'Vue.config.productionTip = false
//使用vue-resource插件
Vue.use(vueresource)new Vue({el: "#app",render: h => h(App),store,beforeCreate() {Vue.prototype.$bus = this}
})
//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备actions——用于响应组件中的动作
const actions={}
//准备mutations——用于操作数组(state)
const mutations={}
//准备state——用于存储数组
const state={}//创建并暴露store
export default new Vuex.Store({actions,mutations,state
})
当前求和为:{{$store.state.sum}}
//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备actions——用于响应组件中的动作
const actions={addOdd(context,value){if(context.state.sum%2){console.log("actions中的addOdd被调用了")context.commit("Addmore",value)}},addWait(context,value){setTimeout(()=>{console.log("actions中的addWait被调用了")context.commit("Addmore",value)},500)}
}
//准备mutations——用于操作数组(state)
const mutations={Addmore(state,value){console.log("mutations中的Addmore被调用了")state.sum+=value},Deduce(state,value){console.log("mutations中的Deduce被调用了")state.sum-=value}
}
//准备state——用于存储数组
const state={sum:0}//创建并暴露store
export default new Vuex.Store({actions,mutations,state
})
//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备actions——用于响应组件中的动作
const actions={addOdd(context,value){if(context.state.sum%2){console.log("actions中的addOdd被调用了")context.commit("Addmore",value)}},addWait(context,value){setTimeout(()=>{console.log("actions中的addWait被调用了")context.commit("Addmore",value)},500)}
}
//准备mutations——用于操作数组(state)
const mutations={Addmore(state,value){console.log("mutations中的Addmore被调用了")state.sum+=value},Deduce(state,value){console.log("mutations中的Deduce被调用了")state.sum-=value}
}
//准备state——用于存储数组
const state={sum:0}//准备getters——用于将state中的数据进行加工
const getters={bigSum(state){return state.sum*10}
}//创建并暴露store
export default new Vuex.Store({actions,mutations,state,getters
})
当前求和为:{{$store.state.sum}}
当前求和数放大10倍后为:{{$store.getters.bigSum}}
{ …{} }:对象组合
Title
//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备actions——用于响应组件中的动作
const actions={addOdd(context,value){if(context.state.sum%2){console.log("actions中的addOdd被调用了")context.commit("Addmore",value)}},addWait(context,value){setTimeout(()=>{console.log("actions中的addWait被调用了")context.commit("Addmore",value)},500)}
}
//准备mutations——用于操作数组(state)
const mutations={Addmore(state,value){console.log("mutations中的Addmore被调用了")state.sum+=value},Deduce(state,value){console.log("mutations中的Deduce被调用了")state.sum-=value}
}
//准备state——用于存储数组
const state={sum:0,school:"幸福大学",subject:"计算机"
}//准备getters——用于将state中的数据进行加工
const getters={bigSum(state){return state.sum*10}
}//创建并暴露store
export default new Vuex.Store({actions,mutations,state,getters
})
当前求和为:{{he}}
当前求和数放大10倍后为:{{bigSum}}
我在{{xuexiao}}学习{{xueke}}
当前求和为:{{sum}}
当前求和数放大10倍后为:{{bigSum}}
我在{{school}}学习{{subject}}
当前求和为:{{sum}}
当前求和数放大10倍后为:{{bigSum}}
我在{{school}}学习{{subject}}
当前求和为:{{sum}}
当前求和数放大10倍后为:{{bigSum}}
我在{{school}}学习{{subject}}
当前求和为:{{sum}}
当前求和数放大10倍后为:{{bigSum}}
我在{{school}}学习{{subject}}
共享
状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间的通信。//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备actions——响应组件中用户的动作
const actions={}
//准备mutations——修改state中的数据
const mutations={}
//准备state—保存具体的数据
const state={}//创建并暴露store
export default new Vuex.Store({actions,mutations,state
})
(2)在main.js中创建vm时传入store配置项
...
//引入store
import store from './store'
...new Vue({el: "#app",render: h => h(App),store
})
//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备actions——用于响应组件中的动作
const actions={jia(context,value){//console.log("actions中的jia被调用了",miniStore,value)context.commit('JIA',value)}
}
//准备mutations——用于操作数组(state)
const mutations={JIA(state,value){// console.log("mutations中的JIA被调用了",state,value)state.sum+=value}
}
//准备state——用于存储数组
const state={sum:0}//创建并暴露store
export default new Vuex.Store({actions,mutations,state,
})
(2)组件中读取vuex的数据:$store.state.sum
(3)组件中修改vuex中的数据:$store.dispatch(‘action中的方法名’,数据)或$store.commit(‘mutations中的方法名’,数据)
备注:
若没有网络请求或其他业务逻辑,组件中也可以越过actions,即不写dispatch,直接写commit
.....
const getters={bigSum(state){return state.sum*10}
}//创建并暴露store
export default new Vuex.Store({......getters
})
(3)组件中读取数据:$store.getters.bigSum
computed:{//借助mapState生成计算属性,从state中读取数据(对象写法)...mapState({he:"sum",xuexiao:"school",xueke:"subject"}),//借助mapState生成计算属性,从state中读取数据(数组写法)...mapState(["sum","school","subject"]),
}
(2)mapGetters方法:用于帮助我们映射getters中的数据为计算属性
computed:{//借助mapGetters生成计算属性,从getters中读取数据(对象写法)...mapGetters({bigSum:'bigSum'})// 借助mapGetters生成计算属性,从getters中读取数据(数组写法)...mapGetters(["bigSum"])
}
(3)mapActions方法:用于帮助我们生成与actions对话的方法,即:包含$store.dispatch(xxx)的函数
methods:{//借助mapActions生成,incrementOdd、incrementWait(对象形式)...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'}),// 借助mapActions生成,incrementOdd、incrementWait(数组形式)...mapActions(["jiaOdd",'jiaWait'])
}
(4)mapMutations方法:用于帮助我们生成与mutations对话的方法,即:包含$store.commit(xxx)的函数
methods:{//借助mapMutations生成,increment、decrement(对象形式)...mapMutations({increment:'JIA',decrement:'JIAN'}),// 借助mapMutations生成,JIA、JIAN(数组形式)...mapMutations(["JIA",'JIAN'])
}
备注:mapActions与mapMutations使用时,若有传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象