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>
複製代碼
在掘金髮布的第一篇文章,初來乍到,前端初學者,請多指教~😁前端