我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue中$set用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue中$set用法详解

摘要:地址没有改变,vue就监测不到数据变化。这个时候,双向绑定就失效了。

想了解有关JS堆栈的知识?请点击这里。

1、为什么要用set?

在vue中,并不是任何时候数据都是双向绑定的。
在官方文档中,有这样一段话,如下:

在这里插入图片描述

从文档得知,当数据没有被双向绑定的时候,我们就需要使用set了

2、set用法

解决数据没有被双向绑定我们可以使用 vm.$set 实例方法,该方法是全局方法 Vue.set 的一个别名。

- this.$set(原数组, 索引值, 需要赋的值)

length的问题还需要用splice方法。

- vm.items.splice(newLength)

3、什么时候使用set?

set为解决双向绑定失效而生,我们只需要关注什么时候双向绑定失效就可以了。

笔者看完了官方文档以后,总结了一下,只要值的地址没有改变,vue是检测不到数据变化的

共有下面三种情况:

  • 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
  • 当你修改数组的长度时,例如:vm.items.length = newLength
  • 由于 JavaScript 的限制,Vue不能检测对象属性的添加或删除

此处针对第三点做一些说明:

var vm = new Vue({
  data: {
    a: 1
  }
})
// `vm.a` 现在是响应式的

vm.b = 2
// `vm.b` 不是响应式的

从上面的代码我们可以知道vm.b不是响应式的,简单的来说,如果对象中原来没有这个key,新增的key是无法双向绑定的。

当然这里我们同样可以用set去解决这个问题:

vm.$set(vm.userProfile, 'age', 27)

如果我们添加的属性很多条,可能就需要写一个循环来多次set。当然你也可能使用Object.assign,这里有一些需要注意的地方。

如果你想添加新的响应式属性,下面这样写是不行的。

Object.assign(vm.userProfile, {
  age: 27,
  favoriteColor: 'Vue Green'
})

下面这样才是正确的。

vm.userProfile = Object.assign({}, vm.userProfile, {
  age: 27,
  favoriteColor: 'Vue Green'
})

4、文档地址

https://cn.vuejs.org/v2/guide/list.html#logo

以上

到此这篇关于vue中$set用法详细讲解的文章就介绍到这了,更多相关vue中$set用法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue中$set用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue中$set用法详解

在vue中,并不是任何时候数据都是双向绑定的,解决数据没有被双向绑定我们可以使用 vm.$set 实例方法,该方法是全局方法 Vue.set 的一个别名,这篇文章主要介绍了vue中$set用法详细讲解,需要的朋友可以参考下
2022-12-09

c++中set的用法详解

c++kquote>set 是一种存储不重复且有序元素的容器,元素的顺序由比较函数决定。创建 set 使用 set 语法,插入元素用 insert() 方法,查找元素用 find() 方法,删除元素用 erase() 方法。可通过迭代器或
c++中set的用法详解
2024-05-01

shell中set指令的用法详解

语法set [-可选参数] [-o 选项]功能说明 set 指令可根据不同的需求来设置当前所使用 shell 的执行方式,同时也可以用来设置或显示 shell 变量的值。当指定某个单一的选项时将设置 shell 的常用特性,如果在选项后使用
2022-06-04

Python中set方法的使用教程详解

在Python中,set是一种集合数据类型,表示一个无序且不重复的集合。本文主要为大家详细介绍了Python中set方法的使用,需要的可以参考一下
2023-05-18

vue中this.$set怎么用

这篇文章给大家分享的是有关vue中this.$set怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue中 this.$set的使用背景:在我写前端项目的时候,后端给我们的一个json对象,并且我已经渲染在
2023-06-25

Vue中watch使用方法详解

watch就是当值第一次绑定的时候,是不会执行监听函数的,只有值诞生改变才会执行。如果需要在第一次绑定的时候也执行函数,则需要用到immediate属性,比如当父组件向子组件动态传值时,子组件props首次获取到父组件传来的No认知时,也需要执行函数
2023-01-28

Vue中$set()的使用方法场景分析

由于Vue会在初始化实例时进行双向数据绑定,使用Object.defineProperty()对属性遍历添加getter/setter方法,所以属性必须在data对象上存在时才能进行上述过程,这样才能让它是响应的,这篇文章主要介绍了Vue中$set()的使用方法场景分析,需要的朋友可以参考下
2023-02-18

Python中set与frozenset方法和区别详解

set(可变集合)与frozenset(不可变集合)的区别: set无序排序且不重复,是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合),
2022-06-04

Vue中XMLHttpRequest的使用方法详解

Vue中使用XMLHttpRequest(XHR)可以获取数据的方式与传统的HTML页面相同,本文主要来和大家讲讲它的正确使用方法,希望对大家有所帮助
2023-05-19

详解java中List中set方法和add方法的区别

本文主要介绍了详解java中List中set方法和add方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

Vue中的nextTick方法详解

Vue的nextTick方法是用来在下次DOM更新周期中执行回调函数的方法,用于DOM操作后获取DOM更新后的状态,使用场景包括异步更新DOM、获取更新后元素的位置等情况,一般结合Vue的异步更新机制和watch监听器使用,实现方式可使用Promise、setTimeout等异步方法
2023-05-16

编程热搜

目录