vue根组件mounted的时候异步请求得到全局参数用于字段翻译,存入store,子组件刷新有时取

项目使用vue,一些字段需要翻译,后台给了一个接口,用于获取字典。
我在根组件mounted的时候发请求,

https://img.mukewang.com/5c80bd070001cfda03700247.jpg

store是这样的:

https://img3.mukewang.com/5c80bd110001366e02660176.jpg

然后在子组件取参数

https://img2.mukewang.com/5c80bd1c0001969e02880212.jpg

现在问题来了,如果从其他页面进入这个页面,getParams()是似乎总是可以取到参数,但是如果在当前页面刷新,就有可能无法取到参数,这是dic还是{}。很显然这是一个异步的问题。


想到一个比较稳妥的解决方案,写一个action,先判断state里面的dictionary有没有,如果没有就去发个请求,返回promise,在then里面写之后的逻辑。每次需要翻译的时候就去dispatch这个action。


但是这个项目几乎每个页面都需要这个翻译的参数,有没有办法只请求一次,不用每次都去使用这个action?


目前的解决方案是用延时


mounted(){

    setTimeout(() => {

     this.getParams();

   }, 1000);

  }

用了之后好像再没遇到过参数获取不到的问题了。但是这种做法并不严谨。有没有更稳妥的做法?


UYOU
浏览 1471回答 1
1回答

森林海

在这里找到答案了,监听store的变化可以实现目的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript