this.$axios.post('https://....php',this.$qs.stringify({
user: 'suess'
}))
.then(res => {
this.dataa = res.data; //这里的dataa视图不会更新,在其他函数里this.dataa没有值
})

在Vue中中括号记法赋后,不会触发 updated,也就是视图没有更新。

用push, pop 等方法改变数组则可以,或者直接将指针指向一个新的数组,例如通过 slice,filter,map等方法返回的新数组,也会触发视图更新。

也可以通过Vue.$set()的办法来改变数组的值。


$set

ps:现在有两个数组,分别为arr1,arr2,如果arr1以下标赋值改变数组,arr2以$set改变数组,结果是什么样呢?

data:{

arr1 = ['a','b','c'];

arr2 = [‘foo','bar','baz'];

}

vm.arr1[1] = 'alpha';

vm.$set(vm.arr2, 1, 'alpha');

根据开始我们说的根据下标索引改变数组不能触发状态更新,我们会知道:第一个数组的第二项改变不会在页面更新,只有第二个数组的更改会在页面更新。然而结果却是:

arr1 = ['a', 'alpha', 'b', 'c'];

arr2 = [‘foo', 'alpha', 'bar','baz'];

两个数组的值都更新了,也就是说,arr2用$set()方法更新时,页面会全部更新一遍。

转自https://www.jb51.net/article/136049.htm

filter()快速过滤创建一个新数组

var new_array = arr.filter(

callback(element[, index[, array]])[, thisArg]

)

var a = [1,2,3,4].filter(m => true)

a

(4) [1, 2, 3, 4]

var a = [1,2,3,4].filter(m => false)

a

[]

var a = [1,2,3,4].filter(m => m>2)

a

(2) [3, 4]

转自https://blog.csdn.net/weixin_30680385/article/details/98122329

map()

(1) 返回一个经过处理后的新数组,但不改变原数组的值。

var a = [1,2,3,4,5]

var b = a.map((item) => {

return item = item * 2

})

console.log(a) // [1,2,3,4,5]

console.log(b) // [2,4,6,8,10]

转自https://www.jb51.net/article/150865.htm


循环push

方法1:循环push

for(var i in that.xuanzArr_beixuan){

that.xuanzArr.push([]);

}

方法2:解析JSON

JSON.parse(JSON.stringify(this.templateData))

转自https://www.cnblogs.com/shark1100913/p/12143534.html


slice()

slice是指定在一个数组中的元素创建一个新的数组,即原数组不会变

var color = new Array('red','blue','yellow','black');

var color2 = color.slice(1,2);

alert(color);   //输出 red,blue,yellow,black

alert(color2); //输出 blue;注意:这里只有第二项一个值

https://blog.csdn.net/hbwang_716/article/details/118684011

vue 数组更新(push【可用】,$set,slice,filter,map【都属于浅拷贝】)问题的更多相关文章

  1. Vue数组更新及过滤排序

    前面的话 Vue为了增加列表渲染的功能,增加了一组观察数组的方法,而且可以显示一个数组的过滤或排序的副本.本文将详细介绍Vue数组更新及过滤排序 变异方法 Vue 包含一组观察数组的变异方法,它们将会 ...

  2. vue 数组更新 this.$set(this.dataList, data.index, data.data)

    vue 数组更新 this.$set(this.dataList, data.index, data.data) https://www.cnblogs.com/huangenai/p/9836811 ...

  3. vue数组更新界面无变化

    1. vue数组更新界面无变化 1.1. 说明 对数组进行更新或者添加,一定要注意方式,我的情况是数组套数组,双重循环,在造数据的时候,不断从尾部添加数据,所以写成了如下形式,每次下拉都会去加载一批相 ...

  4. VUE 数组更新

    1.数据方法分类: (1)原数组改变 push pop unshift shift reverse sort splice (2)原数组未变,生成新数组 slice concat filter map ...

  5. 数组方法push() pop() shift() unshift() splice() sort() reverse() contact()浅拷贝 slice()原数组拷贝

    push() pop() shift() unshift() splice() sort() reverse() 参考资料:https://wangdoc.com/javascript/stdlib/ ...

  6. vue 数组更新检测注意事项

  7. vue数组操作不更新视图问题

    vue 观察数组的变异方法 更新视图 push() pop() shift() unshift() splice(i,n,arr) sort(xx) reverse() ex: app.book.pu ...

  8. vue数组对象修改触发视图更新

    直接修改数组元素是无法触发视图更新的,如 this.array[0] = { name: 'meng', age: 22 } 修改array的length也无法触发视图更新,如 this.array. ...

  9. vue 数组中嵌套的对象添加新属性--页面更新

    vue 数组中嵌套的对象添加新属性--页面更新:https://www.jianshu.com/p/8f0e5bb13735

随机推荐

  1. 1.6_HTML基础属性

    name 属性 name 属性用于指定标签元素的名称. <a> 标签内必须提供 href 或 name 属性. <a name="value"> id 属性 ...

  2. n【c#】委托:delegate 学习笔记

    类似于c/c++的指针,只不过c#的委托存储的是某个方法的调用,派生子System.Delegate

  3. ViewGroup事件分发源码分析

    1.AndroidStudio源码调试方式 AndroidStudio默认是支持一部分源码调试的,但是build.gradle(app) 中的sdk版本要保持一致, 最好是编译版本.运行版本以及手机的 ...

  4. SCP远程传输文件

    今天想用SCP通过局域网传输文件到服务器,但却发生了下面这种事情: 上面描述 连接主机端口22被拒绝,失去连接 后发现因为没有指定端口,我服务器这边改了端口,所以根据自己情况改一下命令 scp -29 ...

  5. centos7使用tar包安装mysql5.7

    特别注意: 文档中涉及到密码的都是用的是弱密码,是存在安全风险的,一定要根据自己的情况修改为复杂度更高的密码! centos 7.6 mysql 5.7.31 基础目录: /srv/{app,data ...

  6. Linux_ps总结

    ps命令用于监测进程的工作情况.进程是一直处于动态变化中,而ps命令所显示的进程工作状态时瞬间的 使用方式: ps [options] 常用参数 -A 显示所有进程 -a 显示现行终端机下的所有进程, ...

  7. windows清理必看

    清理缓存 代码如下 介绍此文件夹都是缓存文件全选删除即可 ctrl+A全选shift+del强制删除(不会添加到回收站) %temp% 找到C盘右击属性选择想要删除的文件进行清理即可 清理完点击清理系 ...

  8. 022年9月12日 学习ASP.NET Core Blazor编程系列三——实体

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  9. Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 一)

  10. k8s更换网络插件:从flannel更换成calico

    卸载flannel 查看已安装的flannel的信息 # 查看CNI插件,可以得知使用的是flannel # cat /etc/cni/net.d/10-flannel.conflist { &quo ...