vue中Vue.set()的使用以及对其进行深入解析

yizhihongxing

Vue.set() 是 Vue.js 内部提供的一种便捷的方法,用来在一些特定的场景下,手动触发 Vue.js 的响应式更新机制。

一、Vue.set() 的基本使用

Vue.set() 接收三个参数:

Vue.set(obj, prop, value)

其中:

  • obj:要添加响应式属性的目标对象
  • prop:要添加响应式属性的对象键
  • value:要添加的响应式属性的值

实际上,Vue.set() 做的工作就是:
1. 判断 obj 是否是响应式对象,如果不是,则直接返回,不做任何操作
2. 判断要添加的属性 prop 是否已经存在,如果已经存在,则直接赋值,不会触发响应式更新
3. 如果要添加的属性 prop 不存在,则调用 Vue.js 内部方法,将其加入响应式监听列表,并触发响应式更新

例如:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="changeMessage">改变message</button>
  </div>
</template>

<script>
export default {
  data () {
    return {
      obj: {
        message: 'hello'
      }
    }
  },
  methods: {
    changeMessage () {
      Vue.set(this.obj, 'message', 'world')
    }
  }
}
</script>

此时,点击按钮后,页面将显示“world”。

二、Vue.set() 的深入解析

Vue.js 默认只对对象的第一层属性进行响应式监听,当一个对象属性值发生变化时,才会触发更新。但是,如果需要对一个嵌套对象的属性进行响应式监听,就需要使用 Vue.set() 或者 this.$set() 了。

例如:

<template>
  <div>
    <p>{{ book.name }}</p>
    <p>{{ book.author }}</p>
    <button @click="changeBook">更改book的内容</button>
  </div>
</template>

<script>
const book = {
  name: 'Vue.js实战',
  author: {
    name: '作者A',
    age: 30
  }
}

export default {
  data () {
    return {
      book
    }
  },
  methods: {
    changeBook () {
      Vue.set(this.book.author, 'age', 31)
    }
  }
}
</script>

此时,更改 book 对象的嵌套属性时,需要使用 Vue.set() 或者 this.$set() 来手动触发响应式更新。

三、总结

  • Vue.set() 是 Vue.js 内部提供的方法,用来手动触发响应式更新机制
  • Vue.set() 接收三个参数:要添加响应式属性的目标对象、要添加响应式属性的对象键、要添加的响应式属性的值
  • 当需要对一个嵌套对象的属性进行响应式监听时,才需要使用 Vue.set() 或者 this.$set() 来手动触发响应式更新。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中Vue.set()的使用以及对其进行深入解析 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue配置启动项目自动打开浏览器方式

    下面我将详细讲解如何在Vue项目中配置启动后自动打开浏览器的方法。 步骤 1:安装依赖包 首先要在项目中安装一个依赖包 opn,这个包可以在 Node.js 中打开网址或者文件。我们可以在控制台中使用以下命令: npm install opn –save-dev 步骤 2:在 package.json 中配置启动脚本 我们需要在 package.json …

    Vue 2023年5月28日
    00
  • Sublime Text新建.vue模板并高亮(图文教程)

    下面我将为你详细讲解“Sublime Text新建.vue模板并高亮(图文教程)”的攻略: Sublime Text新建.vue模板并高亮(图文教程) 1. 下载Vue Syntax Highlight插件 首先,在Sublime Text中安装Vue Syntax Highlight插件。可以选择在菜单栏中选择“Preferences” -> “Pa…

    Vue 2023年5月28日
    00
  • mpvue构建小程序的方法(步骤+地址)

    mpvue是一款基于Vue.js框架的小程序前端开发框架,它可以实现在小程序中使用Vue.js的语法和开发方式,极大地提高了小程序的开发效率和代码质量。下面我将详细讲解如何使用mpvue构建小程序。 步骤 安装mpvue脚手架工具 npm install -g vue-cli vue init mpvue/mpvue-quickstart my-projec…

    Vue 2023年5月27日
    00
  • Vue2.0子同级组件之间数据交互方法

    当我们在Vue2.0中开发应用时,会遇到子组件之间需要传递数据的情况,这时候我们可以使用父子组件传参、eventBus、vuex、$attrs和$emit等方法来实现子组件之间的数据交互。 父子组件传参 父子组件之间传参是Vue2.0提供的最基本的数据交互方式,其核心思想是通过props属性将父组件的数据传递到子组件中,子组件通过props接收这些数据,从而…

    Vue 2023年5月28日
    00
  • Vue源码学习记录之手写vm.$mount方法

    下面我详细讲解一下 “Vue源码学习记录之手写vm.$mount方法” 的完整攻略,包括如下几个步骤: 1. 确定学习目标 在学习Vue源码的过程中,我们需要了解Vue内部的一些实现细节。这个过程并不简单,我们需要先确定学习目标,才能有系统地学习。在这里,我们的学习目标就是手写 Vue 中的 vm.$mount() 方法。 2. 阅读官方文档 Vue 官网提…

    Vue 2023年5月29日
    00
  • 简单聊一聊vue中data的代理和监听

    接下来我会详细讲解“简单聊一聊vue中data的代理和监听”的完整攻略。 什么是Vue中的数据代理和监听 在Vue中,数据驱动是其核心概念,而Vue中的数据代理和监听是实现数据驱动的重要手段。数据代理和监听可分别用于Vue实例和其组件中的数据操作。 数据代理 数据代理是指在Vue实例的创建过程中,通过Object.defineProperty()方法对$da…

    Vue 2023年5月28日
    00
  • vue插件vue-resource的使用笔记(小结)

    vue插件vue-resource的使用笔记 什么是vue-resource vue-resource是一个Vue.js的插件,它为我们提供了一个服务,用于在Vue.js应用程序中轻松地处理Web API请求和响应。它和jQuery的Ajax非常类似,不过它更适合Vue.js。 安装 npm install vue-resource –save 使用 在V…

    Vue 2023年5月28日
    00
  • 详解vue与后端数据交互(ajax):vue-resource

    下面是“详解vue与后端数据交互(ajax):vue-resource”的完整攻略,包含以下几个部分: 概述 安装vue-resource 使用示例1:GET请求 使用示例2:POST请求 5.参考链接 1. 概述 Vue.js是一款轻量级、高效的渐进式JavaScript框架,可以用于构建 Web 界面和单页应用程序。而vue-resource是Vue.j…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部