vuex核心是store(仓库)。vuex和单纯的全局对象的区别:
// 定义
state: {
doctorOnlineTip: {}
},
// 获取(放在computed计算属性中获取)
a) $store.state获取:
this.$store.state.doctorOnlineTip
b) mapState
...(mapState['doctorOnlineTip'])
getters: {
lastDoctorOnlineTip: state => {
return state.doctorOnlineTip
}
}
// 页面获取getters里的属性,在computed计算属性里获取
a)$store.getters获取:
computed: {
lastDoctorOnlineTip () {
return this.$store.getters.lastDoctorOnlineTip
}
}
b) mapGetters获取
import { mapGetters} from 'vuex'
computed: {
lastDoctorOnlineTip: ...mapGetters(['lastDoctorOnlineTip'])
}
mutations: {
setDoctorOnlineTip (state, doctorOnlineTip) {
state.doctorOnlineTip = doctorOnlineTip
if (!doctorOnlineTip) {
window.localStorage.removeItem('lastDoctorOnlineTip')
} else {
window.localStorage.setItem('lastDoctorOnlineTip', JSON.stringify(doctorOnlineTip))
}
}
},
// 页面修改
this.$store.commit('setDoctorOnlineTip', data)
import {
getAddress
} from '_a/system'
export default {
state: {
addressList: null
},
mutations: {
setAddress (state, address) {
state.addressList = address
}
},
getters: {
addressList: state => {
return state.addressList
}
},
actions: {
getAddress ({ commit }) {
return new Promise((resolve, reject) => {
const localAddress = window.localStorage.getItem('address')
if (localAddress) {
commit('setAddress', JSON.parse(localAddress))
resolve(JSON.parse(localAddress))
}
getAddress().then(list => {
commit('setAddress', list)
window.localStorage.setItem('address', JSON.stringify(list))
resolve(list)
})
})
}
}
}
index文件
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user.js'
import clinic from './modules/clinic.js'
// import address from './modules/address'
import doctorOnlineTip from './modules/doctorOnlineTip'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
WS_ASSIST: 1
},
mutations: {
WS_ASSIST (state) {
state.WS_ASSIST = Math.random()
}
},
actions: {
},
modules: {
user,
clinic,
// address
doctorOnlineTip
}
})
单个状态文件
export default {
state: {
doctorOnlineTip: {}
},
getters: {
lastDoctorOnlineTip: state => {
return state.doctorOnlineTip
}
},
mutations: {
setDoctorOnlineTip (state, doctorOnlineTip) {
state.doctorOnlineTip = doctorOnlineTip
if (!doctorOnlineTip) {
window.localStorage.removeItem('lastDoctorOnlineTip')
} else {
window.localStorage.setItem('lastDoctorOnlineTip', JSON.stringify(doctorOnlineTip))
}
}
}
}
修改
this.$store.commit('setDoctorOnlineTip', data)