axios get请求数据成功后怎样动态赋值

发布于 2022-09-06 15:08:42 字数 341 浏览 25 评论 0

我想在axios取到数据后赋值给this.datas.lists。如果直接写this.datas.lists = res.data是没有问题的,但是我把this.datas.lists当参数传进来就无论如何都赋值不成功,请求是成功的,请问是为什么?谢谢
图片描述

如图所示,这样请求数据是没问题的但是将数据赋值给message这个参数,this.datas.lists仍然是空的。

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

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

发布评论

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

评论(5

没︽人懂的悲伤 2022-09-13 15:08:42

1.解决方法

使用push()方法,就可以了:

getDate(link,message) {
  this.$http.get(url).then(res=> {
      this.datas.lists .push(res.data);
  })
}

2.问题理解

目测你的参数this.datas.lists应该是数组类型 [ ],数组类型属于引用类型,传参的时候属于引用传递。我感觉你应该在问:我既然用的是引用传递,message就是指向this.datas.lists,那为什么this.datas.lists值仍然是空呢?

3.原因

你使用的是message = res.data,实际上是是将message赋予了res.data对象的引用,即重新分配了内存地址,message自然不再指向this.datas.lists。所以不能改变this.datas.lists的值。

4.数组类型和引用类型

  1. 基本类型: string,number,boolean,null,undefined
  2. 引用类型: Function,Array,Object
    (通常 [ ]来定义的数组是属于Array)可以通过 instanceof来判断

      var arr=[];
      console.log(arr instanceof Array); //结果为true

5.建议

建议还是直接使用 this.datas.lists来操作数据就可以了,简单快捷啊 ,有木有。

策马西风 2022-09-13 15:08:42

js的函数参数传递为值传递。

当传入的是 基本类型的参数时:就是复制了份内容给i而已,i与age之间没有关系。

function setAge(i)

{

alert(i);//24
i = 18;
alert(i);//18,i的改变不会影响外面的age

};

var age = 24;
setAge(age);
alert(age);//24
当传入的参数为引用类型时:

function setName(obj)

{

obj.name = 'haha';

};

var obj2 = new Object();
setName(obj2);
alert(obj2.name); // haha

这看起来很像是传递的是引用,因为obj.name受到改变了,但其实不是,其实还是值,因为obj2本身的值就是新对象的地址,所以传进去的就是这个地址。
你可以参考下!!!!!!!!!!!!!!!!!

煮酒 2022-09-13 15:08:42

大哥 你不能把this.data.lists当做参数传递进去呀~~~
你应该这么写

getDate(link) {
  this.$http.get(url).then(res=> {
      this.datas.lists = res.data 
  })
}
幸福%小乖 2022-09-13 15:08:42

@乾隆 说的是对的,
你传的实际上还是一个“值”,而不是引用。

但你可以试一下传:this.datas,然后函数体内这样赋值:

this.datas.lists=res.data;

青衫儰鉨ミ守葔 2022-09-13 15:08:42

新建一个vue调用方法就可以把值传出去了图片描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文