- 46
- 0
项目使用vue,一些字段需要翻译,后台给了一个接口,用于获取字典。
我在根组件mounted的时候发请求,
new Vue({
data:{},
methods:{
getDic(){
axios.post(url)
.then(res=>{
this.$store.commit('saveDic',res)
})
}
},
mounted(){
this.getDic();
}
})
store是这样的:
const store = {
state:{
dictionary:{}
},
mutation:{
saveDic(state,dic){
state.dictionay = dic;
}
}
}
然后在子组件取参数
export default {
data() {},
methods:{
getParams(){
let dic = this.$state.dictionary
console.log(dic)
}
},
mounted(){
this.getParams();
}
}
现在问题来了,如果从其他页面进入这个页面,getParams()是似乎总是可以取到参数,但是如果在当前页面刷新,就有可能无法取到参数,这是dic还是{}。很显然这是一个异步的问题。
想到一个比较稳妥的解决方案,写一个action,先判断state里面的dictionary有没有,如果没有就去发个请求,返回promise,在then里面写之后的逻辑。每次需要翻译的时候就去dispatch这个action。
但是这个项目几乎每个页面都需要这个翻译的参数,有没有办法只请求一次,不用每次都去使用这个action?
目前的解决方案是用延时
mounted(){
setTimeout(() => {
this.getParams();
}, 1000);
}
用了之后好像再没遇到过参数获取不到的问题了。但是这种做法并不严谨。有没有更稳妥的做法?
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
