store
QQ2052021114 store
store的目录在:@/store;
# 新增store模块
新的模块只需要在store->modules添加文件就可以,store->index.js会自动编译改store。
例如文件 stote->modules->log.js 的模板如下:
import mutationsActions from '../mutations-actions'
let state = {
logs: []
};
export default {
namespaced: true,
state,
actions: mutationsActions.actions,
mutations: mutationsActions.mutations()
}
其中 mutationsActions.mutations() 对象中有 handler方法,其中该方法回调会返回 state 和 data 。
每个 store 对象都会被某人全部赋值。如果不需要特殊处理,那么只要在 state 对象中添加新的对象就可以。例如
let state = {
logs: [],
path: {},
};
如果有其他的特殊处理,请看下面的使用教程。
# 使用store
通过使用统一的赋值方法,调用每一个store 模块下的对象,实现一样的效果。
如果赋值 store->modules->log.js 下 store 的logs。
store.dispatch('log/handleChangeVal', {
key: 'logs',
val: {
// 这里填写数据
...log
}
})
注意
store.dispatch 的第一个单词是store模块 modules 下文件的名称,第二个单词统一为为固定方法 handleChangeVal;
- 如果不需要特殊处理,那么key就是state对象的字段。
- 如果需要特出处理,那么key,可以自定义,但是在改模块下的添加自定义key方法。
# 自定义store
场景:stote->modules->log.js 下 store 的path 只需要修改该对象下的 status 的值,那么store的 val 需要配合一个 noSetState:true 字段。
store 默认下值直接赋值的,如果需要单独使用自定义方法来估值,那么val对象中必须含有noSetState:true
# 调用:
store.dispatch('log/handleChangeVal', {
key: 'customFuntion',
val: {
noSetState: true,
pathData: {
status: 1
}
}
})
# store->modules->log.js
import mutationsActions from '../mutations-actions'
let state = {
path: {}
};
export default {
namespaced: true,
state,
actions: mutationsActions.actions,
mutations: mutationsActions.mutations({
handler(state, data) {
// 这里的key跟自定义key一致
if (data.key === 'customFuntion') {
stete.path['status'] = data.val.pathData.status
}
}
})
}
详细可以具体查看源码里面的案例
类似自定义 store 方法请查看 uPlus (opens new window)
下对底部导航控制的store方法,文件地址:uplus permission (opens new window)