对于 改变vuex 内数据的操作:
commit 和 dispatch
由此开题:commit 是 同步修改,dispatch 是异步操作
commit('SET_TOKEN', result.token)
dispatch('UserPermission');
当我们使用模块化开发的时候, 会有如下项目结构:
store
modules (模块集)
app.js (模块1)
user.js (模块2)
getters.js (getters.类似 计算属性)
index.js (创建vuex 并导出, 在mian.js 导入,注册)
注意:在commit 和 dispatch 的时候对模块内的操作可以通过
commit('app/SET_LANG', token)
dispatch('app/UpdataLang');
方法前面加了 模块的名字:这样方便我们操作且清晰:源于 一个属性 namespaced: true,
const app = {
state: {
lang: 'en',
},
mutations: {
SET_LANG(state, data) {
state.lang = data;
},
},
actions:{
UpdataLang({commit}, data) {
commit('SET_LANG', data)
}
},
namespaced: true, // 就是这个属性实现的
}
export default app;
遇到的问题
1.切换语言请求头语言不改变
调试的时候,不刷新页面,config.js只能触发一次,但是request.js里面这个请求方法每次都会触发,所以在request.js里把修改的cb_lang加上就会及时触发,这样调用接口后,后端就可以返回不同的语言数据了
//request.js
header['cb_lang'] = uni.getStorageSync('locale') ? uni.getStorageSync('locale') :'zh_cn'
多语言参考:lang 参考