vue add vuex
复制代码
npm install vuex -save
复制代码
import store from './store';
new Vue({
'el': '#app',
router,
store,
'template': '<App/>',
'components': {App},
});
复制代码
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
strict: true,
state: {
//公共数据池,在项目的任何组件中均可以拿到数据池中的内容并可进行更改
},
getters: {
//至关于vue中计算属性computed的做用
},
mutations: {
//当strict为true,v在外面直接更改state数据池里的值会报错,须要在此设置回掉函数进行更改
},
actions: {
//处理异步
}
})
复制代码
export defalut new Vuex.Store({
state: {
//公共数据池,在项目的任何组件中均可以拿到数据池中的内容而且可进行更改
name : 'Angelababy',
age : 18,
look : 'beautiful'
}
})
复制代码
this.$store.state.name
复制代码
//首先引入mapState
import { mapState } from 'vuex'
//将要取出的数据在computed里取出,以下storeName、storeAge、storeLook即为取出的值
export default {
computed: mapState({
storeName: state => state.name,
storeAge: state => state.age,
storeLook: state => state.look
})
}
复制代码
export default {
computed: {
...mapState(['name','age','look'])
//或者
...mapState({
storeName: state => state.name,
storeAge: state => state.age,
storeLook: state => state.look
}),
//其余业务逻辑
gender () {
return 'female'
}
}
}
复制代码
export defalut new Vuex.Store({
getters: {
//至关于组件中的计算属性computed的做用
newAge (state) {
return state.name + 1
}
}
})
复制代码
this.$store.getters.newAge
复制代码
//引入
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters(['newAge'])
//或者
...mapGetters({
babyNewAge: 'newAge'
}),
//其余业务逻辑
gender () {
return 'female'
}
}
}
复制代码
export defalut new Vuex.Store({
mutations: {
//组件中调用改变state中内容的方法
changeName (state,name) {
state.name = name;
}
},
})
复制代码
//第一个参数为调用mutations中的方法
//第二个参数传入改变的值
this.$store.commit('changeName','Zhao Wei')
复制代码
export defalut new Vuex.Store({
mutations: {
//组件中调用改变state中内容的方法
changeNameAndAge (state,{name,age}) {
state.name = name;
state.age = age;
}
},
})
复制代码
this.$store.commit('changeNameAndAge',{name:'Zhao Wei';age:20})
复制代码
export defalut new Vuex.Store({
action: {
}
})
复制代码
export defalut new Vuex.Store({
action: {
//ctx至关于state
changeNameAndAge (ctx,{name,age}) {
setTimeout ( () => {
//该changeNameAndAge为mutation中的函数方法
ctx.commit('changeNameAndAge',{name,age})
},1000)
}
}
})
复制代码
this.$store.dispatch('changeNameAndAge',{name:'Zhao Wei',age:20})
复制代码
//引入
import { mapActions } from 'vuex'
export default {
methods: {
...mapActions(['changeNameAndAge'])
}
}
复制代码
<div @cilck="changeNameAndAge({name:'Zhao Wei',age: 20})"></div>
复制代码
在掘金发布的第一篇文章,初来乍到,前端初学者,请多指教~😁前端