Vue项目中使用axios获取网页数据问题

Vue项目中使用axios获取网页数据问题,第1张

现在我们通过webpack+vue-cli搭建起了一个vue项目的框架,如果我们需要在vue组件中使用axios向后台获取数据应该怎么办呢?

通常情况下,我们搭建好的项目目录应该是这样子的

首先需要安装axios,这个会npm的都知道

下一步,在mainjs中引入axios

import axios from "axios";

与很多第三方模块不同的是,axios不能使用use方法,转而应该进行如下 *** 作

Vueprototype$axios = axios;

接着,我们就可以在Appvue中使用axios了

created:function(){ this$axiosget("/seller",{"id":123})then(res=>{ consolelog(resdata); }); }

thisitems = data; this指向当前的function环境,你试试箭头函数,success:data=>{};或者在get:function(){}下面定义一个 var that = this;。。。thatitems = data;

用thissetdata({

shuju1

:

shuju2

})

shuju1:你自己命名的名字,

shuju2:调用接口后返回的数据,

然后你页面就可以用{{shuju1}},这样来获取了。

ref可以绑定dom节点或字组件,用于获取子组件的方法和属性。但是只有组件 完成渲染 时,才可以获取得到,且$refs也不是响应式的!

响应式处理可以包括以下几种方法:也就是说,在子组件完成渲染以后,动态修改的data或method,在父组件都可以实时获取。

(1)使用nexttick();子组件 同步 更改数据可反映到父组件上,nexttick属于微任务,也就是说,在本轮事件循环完成之前,可以执行异步 *** 作,从而保证实时性。

(2)如果子组件数据更新是异步,比如说从接口请求回来的这种,使用nexttick,甚至settimeout(()=>{},0) 都无法读取到已经修改的data,因为在消息队列里面,异步任务作为宏任务始终排在队尾。常发生的情况是,接口请求的数据还没到,父组件中已经读取了refs[componets]xxx的数据,这会导致这个数据打印出来是undefined。

解决办法是:

>>>settimeout(100ms)的等待,这种方法虽然可以解决,但是非常不好,原因是你无法控制接口要多少秒才能到达响应结果

打印结果:

由此可见 settimeout 0 会在接口响应前执行。

>>> 使用回调的方式。接口响应完,在then里,通过$emit触发父组件获取refs的方法。这种回调必然可以保证数据已经set到,再次手动获取,即可得到响应值。

(3)以上分别用于解决子组件同步和异步的问题,但如果子组件使用v-if(资料发现v-for同样会有这种问题),子组件未被渲染,同样会出现$refs无法读取的问题。暴力解决法是,v-if换成v-show。区别在于:v-show不会发生重拍,只是display:none。这种方式虽然可以保证 $refs获取到子组件的数据,但在某些特定的业务场景下(比如子组件请求必须在父组件完成某 *** 作的时候进行),会导致一些逻辑错误。因此合理的解决办法是,用(2)中回调的方法。

其他解决办法待更新

vue获取form表单file, 可以这样 *** 作csdn已为您找到关于vue 获取form表单数据相关内容,包含vue 获取form表单数据相关文档代码介绍、相关教程视频课程,以及相关vue 获取form表单数。

以上就是关于Vue项目中使用axios获取网页数据问题全部的内容,包括:Vue项目中使用axios获取网页数据问题、vue 获取数据后 页面循环不显示、接口返回这样的数据,vue如何获取data中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10080097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存