造成axios取不到值得原因主要是this回调问题。当你执行完函数function时,this指向放生变化。导致this指向函数体本身。这时this.data里的数据取不到。简单直接的解决就是把function写成箭头函数形式,箭头函数不是构造函数,不会指定this,而是抓取上下文this作为自己的this。从而解决本问题。下面上代码:

错误示例:
import axios from ‘axios’;
import qs from ‘qs’;
export default{
requestUrl:{
problemlList:‘接口地址’
},
request:function(url,method,data,header,callback){
url=="/jrbt-h5/user/clickHistory4h5" ? url=“测试域名”+url : “线上域名”+url;
axios({
method: method,
url: url,
headers: header,
params: method == “get”? qs.stringify(data) : ‘’,
data: method == “post” ? qs.stringify(data) : ‘’,
}).then(function(suc){
callback(suc);
}).catch(function(error){
callback(error);
})
},
Get:function(url,data,header,callback){
return this.request(url,‘get’,data,header,callback)
},
Post:function(url,data,header,callback){
return this.request(url,‘post’,data,header,callback)
}
}

正确示例
import axios from ‘axios’;
import qs from ‘qs’;
export default{
requestUrl:{
problemlList:‘接口地址’
},
request:(url,method,data,header,callback)=>{
url=="/jrbt-h5/user/clickHistory4h5" ? url=“测试域名”+url : “线上域名”+url;
axios({
method: method,
url: url,
headers: header,
params: method == “get”? qs.stringify(data) : ‘’,
data: method == “post” ? qs.stringify(data) : ‘’,
}).then((suc)=>{
callback(suc);
}).catch((error)=>{
callback(error);
})
},
Get:function(url,data,header,callback){
return this.request(url,‘get’,data,header,callback)
},
Post:function(url,data,header,callback){
return this.request(url,‘post’,data,header,callback)
}
}

Logo

前往低代码交流专区

更多推荐