返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue中 this.$set的使用详解
  • 630
分享到

vue中 this.$set的使用详解

2024-04-02 19:04:59 630人浏览 独家记忆
摘要

目录Vue中 this.$set的使用使用为什么能够响应式?分析总结vue中 this.$set的使用 背景:在我写前端项目的时候,后端给我们的一个JSON对象,并且我已经渲染在页面

vue中 this.$set的使用

背景:在我写前端项目的时候,后端给我们的一个JSON对象,并且我已经渲染在页面上了。但是由于我自己的需求,想往返回的对象里面添加一个字段,于是我用push一个字段进去,添加是添加进去了,但是页面渲染却没有变化。后来才意识到不是响应式的。如果我们要让这个新字段是响应式的,就要使用到this.$set来注入数据

当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。

使用

this.$set( target, key, value)

target:表示数据源,即是你要操作的数组或者对象

key:要操作的的字段

value:更改的数据

来个小案例:

给一个对象添加一个年龄属性并且让它可以响应式的进行改变

在这里插入图片描述


<template>
  <div class="text">
      <p>{{list}}</p>
      <button @click="add">age++</button>
  </div>
</template>
<script>
export default {
    data(){
        return {
            list:{ name: "张三"}
        }
    },
    methods: {
        add(){
            if(!this.list.age){ // 如果没有age属性就给它添加一个age属性
                this.list.age=18
            }else{
                this.list.age++
            }
            console.log(this.list)
        }
    }
}
</script>

当我们没有使用this.$set去添加对象属性的时候,效果:

数据确实已经添加进去了,但是页面并没有响应式的渲染age属性。

在这里插入图片描述

当我们使用this.$set(this.list,‘age',18)去添加一个属性之后。效果:

在这里插入图片描述

我们能看见添加的数据是响应式的。

为什么能够响应式?

仔细观察一下,使用了this.$set 多了get age和set age方法,这正是能够响应式的原因

在这里插入图片描述

分析

Vue的响应式原理为 javascript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 能够追踪依赖,在 property 被访问和修改时通知变更。这里需要注意的是不同浏览器在控制台打印数据对象时对 getter/setter 的格式化并不同,下图来自官方文档。

在这里插入图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: vue中 this.$set的使用详解

本文链接: https://lsjlt.com/news/157566.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue中 this.$set的使用详解
    目录vue中 this.$set的使用使用为什么能够响应式?分析总结vue中 this.$set的使用 背景:在我写前端项目的时候,后端给我们的一个json对象,并且我已经渲染在页面...
    99+
    2024-04-02
  • Vue中的Vue.set和this.$set怎么使用
    这篇文章主要介绍“Vue中的Vue.set和this.$set怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue中的Vue.set和this.$set怎么使用”文章能帮助大家解决问题。一、...
    99+
    2023-06-29
  • 关于Vue中this.$set的正确使用
    this.#set(obj, key, value) 我们在项目开发的过程中,经常会遇到这种情况:为data中的某一个对象添加一个属性 <template> <...
    99+
    2022-12-09
    this.$set的使用 vue this.$set
  • vue中this.$set怎么用
    这篇文章给大家分享的是有关vue中this.$set怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue中 this.$set的使用背景:在我写前端项目的时候,后端给我们的一个json对象,并且我已经渲染在...
    99+
    2023-06-25
  • vue中$set用法详解
    目录1、为什么要用set?2、set用法3、什么时候使用set?4、文档地址摘要:地址没有改变,vue就监测不到数据变化。这个时候,双向绑定就失效了。 想了解有关JS堆栈的知识?请点...
    99+
    2022-12-09
    vue中$set用法 $set使用 vue中的$set
  • Vue中使用this.$set()如何新增数据,更新视图
    目录使用this.$set()新增数据,更新视图描述简单的讲就是说说vue.set() (this.$set)用法使用this.$set()新增数据,更新视图 描述 如果在实例创建之...
    99+
    2024-04-02
  • vue项目中的this.$get,this.$post等$的用法案例详解
    vue官网上有这么一句话 vue.js的插件应该暴露一个install方法。这个方法的第一个参数是vue构造器,第二个参数是一个可选的选项对象: 注意要首先安装axios 即 np...
    99+
    2022-12-10
    vue 中的this.$get this.$post等$的用法 vue 中this.$get this.$post
  • Vue中使用this.$set()怎么新增数据并更新视图
    本文小编为大家详细介绍“Vue中使用this.$set()怎么新增数据并更新视图”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中使用this.$set()怎么新增数据并更新视图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-02
  • vue项目中使用this.$confirm解析
    目录vue使用this.$confirmvue TypeError: this.$confirm is not a function错误解决方案vue使用this.$confirm ...
    99+
    2024-04-02
  • Vue中this.$nextTick()的理解与使用方法
    目录this.$nextTick()原理:1.Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。2.Vue官网3.等价转换,如果thi...
    99+
    2024-04-02
  • vue中this.$message的实现过程详解
    目录一、vue中为什么可以直接使用this.$message二、message组件的内部实现原理三、总结一、vue中为什么可以直接使用this.$message 1、Message在...
    99+
    2023-05-18
    vue中this.$message实现过程 vue中this.$message实现 vue this.$message
  • vue中$set如何使用
    vue中$set如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下:<!-- 操作 --> &...
    99+
    2024-04-02
  • vue中this.$parent的使用方式
    目录vue组件this.$parent一、在实例中二、在组件中调用组件vue子组件this.$parent调用父组件方法报错TypeError:this.parent.xxx is ...
    99+
    2024-04-02
  • Vue中this.$nextTick()的具体使用
    目录1、官网说法2、DOM 更新3、获取更新后的 DOM4、小结:this.$nextTick()的使用场景1、官网说法 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后...
    99+
    2023-02-06
    Vue this.$nextTick()
  • vue中this.$createElement方法的使用
    目录vue this.$createElement方法关于createElement使用实例参数说明使用示例源码解读vue this.$createElement方法 element...
    99+
    2024-04-02
  • Vue.set()和this.$set()使用和区别
    在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去; 当我们去看vue文档的时候,会发现有这么一句话:如果在...
    99+
    2024-04-02
  • c++中set的用法详解
    c++kquote>set 是一种存储不重复且有序元素的容器,元素的顺序由比较函数决定。创建 set 使用 set 语法,插入元素用 insert() 方法,查找元素用 find(...
    99+
    2024-05-01
    c++
  • Python中set方法的使用教程详解
    目录一、序言二、常用set()方法详解三、总结1.创建空集合2.将可迭代对象转换为集合3.set()方法的其他用法4.结论一、序言 在Python中,set是一种集合数据类型,表示一...
    99+
    2023-05-18
    Python set方法使用 Python set方法 Python set
  • C++中set/multiset与map/multimap的使用详解
    目录一、关联式容器二、set的介绍1、接口count与容器multiset2、接口lower_bound和upper_bound三、map的介绍1、接口insert2、接口inser...
    99+
    2023-02-14
    C++ set/multiset map/multimap使用 C++ set/multiset C++ map/multimap
  • Nodejs中的this详解
    以下内容都是关于在nodejs中的this而非javascript中的this,nodejs中的this和在浏览器中javascript中的this是不一样的。 在全局中的this console.lo...
    99+
    2022-06-04
    详解 Nodejs
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作