vuex我想在action中写ajax问题

发布于 2022-09-04 18:51:59 字数 355 浏览 17 评论 0

在Vuex中的action中使用ajax出现了这样的问题。
获取数据步骤如下:
1.action请求数据
2.这个时候组件就获取值了,但是这个时候ajax没有获取到值呢,所以为空了
3.action中的ajax获取数据成功了
4.mutation开始设置state中的值了
5.get开始获取值了
6.然后组件又去获取vuex中state的值了,这个时候就可以获取成功了。

上面的步骤2、6其实是重复的。就是因为ajax请求放在action中出现的这个问题。
之前看到论坛有人说ajax应该放在action中。这样尝试,最后数据确实是获取成功了。
但是上面的重复操作就造成了页面的异常效果。
请问这个问题各位怎么解决的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蒲公英的约定 2022-09-11 18:51:59

加个loaded参数咯
如果没加载完先不显示页面或者展示loading
加载完才出现.
毕竟ajax之前必须要一个初始值.

指尖上得阳光 2022-09-11 18:51:59

只要是用ajax请求数据, 不管你ajax放在哪, 用不用vuex都会出现这种情况

陌上芳菲 2022-09-11 18:51:59

肯定都会有这种情况,state中的默认值肯定会在computed生命周期的时候给到页面渲染出来,及即使你不放在state中,只放在组件的data中,数据也会在data生命周期出现的时候渲染到页面中。跟是否ajax放在action中无关,通常情况下就应该在获取到数据渲染到页面前,让渲染的部分不显示或者给个loading动态效果,成功后去掉这个loading

樱花坊 2022-09-11 18:51:59

在相应组件上对state中的值进行v-if判断渲染(避免在没获取到值的时候进行渲染), 看看能不能避免你说的页面异常效果

<com v-if="$store.state.xxx"></com>
<loading v-else></loading>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文