Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
涉及非父子组件之间跨组件共享数据、同一个数据在不同页面;控制某个属性,且多个页面都能修改这个数据;构建一个中大型单页应用。
注意: 由于vuex中的state存放的数据在页面刷新时会丢失,vuex只能用于单页应用中不同组件的数据流通。
store:类似容器,包含应用的大部分状态
State:包含所有应用级别状态的对象
Getters:在组件内部获取store中状态的函数,类似组件的计算属性computed
Mutations:唯一修改状态的事件回调函数,默认是同步的,如果要异步就使用Actions
Actions:包含异步操作、提交mutations改变状态
Modules:将store分割成不同的模块
npm install vuex --save
or
yarn vuex
// 如果在模块化构建系统中,请确保在开头调用了 Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
}
})
import store from './store/'
new Vue({
el: '#app',
router,
store, // 使用store
template: '<App/>',
components: { App }
})
1.读取store里的值:
this.$store.state.字段名
如果有 moudle 的话,假设叫 user ,那么取值又要变了,加上 module 名
this.$store.state.user.字段名
2.发起操作请求:
this.$store.dispatch('action中的方法名' , '参数') ;
参数你可以随便传json
3.getters的用法
this.$store.getters.filterDoned
filterDoned 是在 todo 里写的一个 getters 方法