87 lines
2.0 KiB
JavaScript
87 lines
2.0 KiB
JavaScript
export default {
|
||
state:{//存放状态
|
||
token:'token已生成',
|
||
userInfo:{},
|
||
count:0,
|
||
publicColor:'',
|
||
todos: [{
|
||
id: 1,
|
||
text: '我是内容一',
|
||
done: true
|
||
},
|
||
{
|
||
id: 2,
|
||
text: '我是内容二',
|
||
done: false
|
||
}
|
||
],
|
||
obj:{
|
||
a:'吃鸡腿',
|
||
b:'吃自助餐'
|
||
}
|
||
},
|
||
// Vuex中store数据改变的唯一方法就是mutations 不适合异步方法
|
||
mutations: {
|
||
add(state) {
|
||
state.count = 7;
|
||
},
|
||
add2(state, payload) {
|
||
state.count = payload.amount;
|
||
},
|
||
// 单个属性处理方法
|
||
setToken(state,str) {
|
||
state.token = str;
|
||
},
|
||
// 对象处理方法
|
||
updateUserInfo(state, payload) {
|
||
// 变更状态
|
||
state.userInfo = payload.userInfo;
|
||
},
|
||
// 新增字段方法
|
||
newProp(state,payload) {
|
||
state.obj = { ...state.obj, c: payload.c };
|
||
}
|
||
},
|
||
// 可以执行任意的同步和异步操作
|
||
actions:{
|
||
addCountAction ({commit}) {
|
||
commit('add')
|
||
},
|
||
addCountAction2 (context , payload) {
|
||
context.commit('add2', payload)
|
||
},
|
||
// 异步方法
|
||
addCountAction3 (context , payload) {
|
||
setTimeout(function () {
|
||
context.commit('add2', payload)
|
||
}, 2000)
|
||
},
|
||
actionA ({ commit }) {
|
||
return new Promise((resolve, reject) => {
|
||
setTimeout(() => {
|
||
commit('someMutation')
|
||
resolve()
|
||
}, 1000)
|
||
})
|
||
},
|
||
actionB ({ dispatch, commit }) {
|
||
return dispatch('actionA').then(() => {
|
||
commit('someOtherMutation')
|
||
})
|
||
}
|
||
},
|
||
// Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性),对 state 的加工,是派生出来的数据。 可以在多组件中共享 getter 函数,这样做还可以提高运行效率。
|
||
getters: {
|
||
doneTodos: state => {
|
||
return state.todos.filter(todo => todo.done)
|
||
},
|
||
doneTodosCount: (state, getters) => {
|
||
//state :可以访问数据
|
||
//getters:访问其他函数,等同于 store.getters
|
||
return getters.doneTodos.length
|
||
},
|
||
getTodoById: (state) => (id) => {
|
||
return state.todos.find(todo => todo.id === id)
|
||
}
|
||
}
|
||
} |