Vuex
Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间的数据共享
使用vuex来管理全局状态
访问共享数据
this.$store.state.count
import { mapState } from 'vuex'
export default {
data () { return {} },
computed: {
...mapState(['count'])
}
}
更新共享数据
- 向store触发一个事件
import store from '@/store';
export default {
name: 'info',
store,
methods: {
add() {
console.log('add');
store.commit('add');
},
},
};
- vuex更新状态
//...
export default new Vuex.Store({
state: {
count: 0
},
mutations: {
add() {
this.state.count++;
},
}
// ...
});
- 传递参数
this.$store.commit('add', 1)
mutations: {
add (state, step) {
state.count += step
}
}
import { mapMutations } from 'vuex'
export default {
...
methods: {
...mapMutations(['sub']),
handleClick () {
this.sub()
}
}
}
- 使用action异步更新数据
actions: {
addAsync (context) {
setTimeout(() => {
// action不能直接修改共享数据
context.commit('add', 1)
}, 1000)
}
}
// 触发action
this.$store.dispatch('addAsync')
// action同Mutation一样,也可以通过map引入vue实例
- about组件通过vuex来获取状态
import store from '@/store';
export default {
name: 'about',
store,
data() {
return { count: store.state.count };
},
};
getter
getters: {
showNum (state) {
return 'current val:' + state.count
}
}
<h2>{{$store.getters.showNum}}</h2>