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

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如何封装Axios的get、post请求

    封装 Vue Axios Get 和 Post 请求的攻略 Axios 是一款非常流行的基于 Promise 的 HTTP 客户端,它可以在浏览器和 Node.js 中同时使用,用于发送异步请求。在 Vue 应用程序中,我们使用 Axios 经常会涉及到重复的代码,如配置请求头、处理错误等,所以我们可以封装 Axios,减少代码的重复。下面,我们将讲解如何使…

    Vue 2023年5月28日
    00
  • Vue3 实现验证码倒计时功能(刷新保持状态)

    下面是详细讲解“Vue3 实现验证码倒计时功能(刷新保持状态)”的完整攻略。 一、需求分析 我们需要在用户登录页面中,实现一个验证码倒计时功能。用户在输入错误的验证码后,可以点击重新获取验证码,重新开始倒计时。同时,用户切换页面或刷新页面后,倒计时功能仍然可以继续。 二、实现思路 我们可以使用 Vue3 中的 Composition API 以及 local…

    Vue 2023年5月29日
    00
  • vue移动端项目缓存问题实践记录

    Vue移动端项目缓存问题实践记录 介绍 在Vue移动端项目中,使用缓存技术可以有效地提升用户体验和页面加载速度。但是,如果缓存不合理,会导致页面无法正常更新,甚至出现数据混淆的情况。因此,本文将介绍Vue移动端项目缓存问题的实践记录,为大家解决相关问题提供帮助。 分类 在Vue移动端项目中,缓存可以分为两种类型: 浏览器缓存 Vue缓存 浏览器缓存 浏览器缓…

    Vue 2023年5月28日
    00
  • Vue3 之 Vue 事件处理指南

    针对“Vue3 之 Vue 事件处理指南”的完整攻略,我可以进行如下的讲解: Vue3 之 Vue 事件处理指南 1. 介绍 Vue3 中的事件处理相较于 Vue2 有了一些改进。在 Vue3 中,事件的使用更为简洁明了,事件的绑定方式也发生了不少变化。本文介绍如何使用 Vue3 来处理事件。 2. 事件绑定 2.1 使用 v-on 指令绑定事件 在 Vue…

    Vue 2023年5月28日
    00
  • Vue中四种操作dom方法保姆级讲解

    下面我就为你详细讲解一下“Vue中四种操作dom方法保姆级讲解”的攻略。 1. Vue中的DOM操作 在Vue中,我们可以通过四种方法操作DOM元素,这四种方法分别是:插入、更新、删除和替换。下面我们就来仔细看看这四种方法。 2. 插入一个DOM元素 我们可以利用Vue提供的v-html指令或{{}}插值语法插入一个DOM元素。以v-html指令为例,它可以…

    Vue 2023年5月27日
    00
  • Vue export import 导入导出的多种方式与区别介绍

    下面我会详细讲解“Vue export import 导入导出的多种方式与区别介绍”的完整攻略。 1. Vue export import 在 Vue 中,我们经常需要在组件或模块之间共享代码,而 Vue 提供了 export 和 import 关键字来实现这个功能。 1.1 export export 是一个 ES6 中的关键字,用于将模块中的变量、函数、…

    Vue 2023年5月27日
    00
  • 教你用Vue基础语法来写一个五子棋小游戏

    教你用Vue基础语法来写一个五子棋小游戏 1. 前言 本篇攻略将通过使用 Vue 基础语法实现一个简单的五子棋小游戏。这个项目不是一个完整可玩的游戏,它只是演示了使用Vue框架来实现五子棋的各种功能和思路。在这个过程中,你将了解到如何使用Vue开发一个复杂的项目。如果你是初学者,建议先学习 Vue 的基础语法再来实践本文内容。 2. 开始实现五子棋小游戏 首…

    Vue 2023年5月27日
    00
  • Vue的MVVM实现方法

    Vue的MVVM实现方法可以分为以下几步: 1.定义数据模型 首先,需要定义一个数据模型,该模型是我们在Vue中操作的数据源。可以通过Vue的data选项来定义这个模型。 <script> const vueModel = new Vue({ el: ‘#app’, data: { message: ‘Hello World’, items: […

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