vuex我想在action中写ajax问题

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

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

阅读 7k
4 个回答

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

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

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

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

<com v-if="$store.state.xxx"></com>
<loading v-else></loading>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题