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)