vue中的computed 和 vm.$data 原理解析

当我们在使用Vue.js时,我们会经常接触到computed属性和vm.$data数据对象,其中computed属性是通过函数动态计算并返回值的,而vm.$data是Vue实例数据对象,保存了Vue实例中所有的数据。下面我们来详细讲解一下computed和vm.$data的原理解析。

computed属性的原理解析

Computed属性是Vue.js中的一个非常重要的属性,我们可以直接在Vue实例中定义一个computed属性,并在模板中使用该属性的值,从而实现基于特定数据计算而来的动态结果。Computed属性的原理解析如下:

  1. 当一个computed属性被定义时,Vue会为该属性创建一个getter函数,并将该函数添加至Vue实例的computed对象中。

  2. 当computed属性被使用时,getter函数会被调用,并根据当前的数据计算出一个值。

  3. 当使用该computed属性的依赖数据发生变化时,该computed属性所依赖的数据就会被标记为无效状态,下一次获取computed属性值时,Vue会重新计算新的值。

下面是一个简单的computed示例:

<template>
  <div>
    <p>商品数量:{{ num }}</p>
    <p>商品总价:{{ totalPrice }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      price: 10,
      count: 2
    }
  },
  computed: {
    num() {
      return this.count;
    },
    totalPrice() {
      return this.count * this.price;
    }
  }
}
</script>

上面的代码中,我们定义了一个计算商品总价的computed属性totalPrice,并在模板中使用该属性的值。当修改商品数量时,该computed属性所依赖的数据会被标记为无效状态,Vue会重新计算新的值。

vm.$data数据对象的原理解析

Vue实例是通过将一个数据对象传入Vue构造函数创建的,这个数据对象被称为“数据代理对象”,包含了Vue实例中所有的数据。我们可以通过Vue实例中的vm.$data属性获取到这个数据对象,并操作它中的数据。vm.$data数据对象的原理解析如下:

  1. 当Vue实例被创建时,Vue会将数据对象的所有属性转变为getter/setter,从而实现“数据代理”的功能。

  2. 当在模板中使用数据时,getter函数被调用并返回该数据的值。

  3. 当数据发生变化时,setter函数被调用并通知Vue重新渲染视图。

下面是一个简单的vm.$data示例:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="updateMessage">更新</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, World!'
    }
  },
  methods: {
    updateMessage() {
      this.$data.message = 'Hi, there!';
    }
  }
}
</script>

上面的代码中,我们在模板中使用了vm.$data.message属性,并通过updateMessage方法修改了该属性的值。当数据发生变化时,setter函数会被调用并通知Vue重新渲染视图。

综上所述,computed和vm.$data是Vue.js中非常重要的两个属性,它们都是实现Vue数据响应式的核心之一。在实际开发中,我们需要充分掌握它们的原理,并灵活应用到项目中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中的computed 和 vm.$data 原理解析 - Python技术站

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

相关文章

  • Vue.js 中的实用工具方法【推荐】

    首先,我们需要了解什么是Vue.js中的实用工具方法,Vue.js中的实用工具方法是指Vue.js框架提供的一些通用工具函数,可以帮助我们更轻松地实现一些常见的功能。这些工具方法大多数被封装在Vue.js的全局对象Vue上。 下面是Vue.js中常用的实用工具方法: Vue.nextTick() Vue在更新数据后,DOM并不会立即被更新,而是异步更新DOM…

    Vue 2023年5月27日
    00
  • 教你如何优化 Vue.js 应用程序

    教你如何优化 Vue.js 应用程序 Vue.js是一款流行的现代化JavaScript框架,用于开发用户界面。Vue.js能够以高效且灵活的方式管理数据与交互,不过在大型应用中,可能会出现性能问题。本文将提供一些优化Vue.js应用程序的技巧。 1. 使用Vue.js的异步组件 对于大型Vue.js应用程序,为了使单个Vue文件大小更小,可以使用异步组件。…

    Vue 2023年5月27日
    00
  • Vue Element前端应用开发之常规的JS处理函数

    Vue Element前端应用开发之常规的JS处理函数 在Vue Element前端应用开发中,JS处理函数是非常常见的。下面给出了一些常见JS处理函数的使用方法和示例。 1. 数组的过滤函数filter() 简介 filter() 是数组的一个常用方法,它返回一个新的被过滤后的数组,原数组不发生变化。 filter() 接受一个回调函数作为参数,该回调函数…

    Vue 2023年5月28日
    00
  • vue中如何给data里面的变量增加属性

    当需要在 Vue 实例的 data 对象中添加新属性时,可以通过以下两种方法来实现。 方法一:使用 Vue.set() 或 this.$set() 方法 Vue.set() 或 this.$set() 是 Vue 提供的全局方法,用于向响应式对象添加属性。如果需要以动态形式向 Vue 实例的 data 对象中添加属性,可以使用 Vue.set() 或 thi…

    Vue 2023年5月28日
    00
  • vue进行post和get请求实例讲解

    Vue进行post和get请求实例讲解 Vue.js是一款轻量级的JavaScript框架,且它提供了强大的数据绑定和交互功能,于是很多web开发人员喜欢使用Vue.js开发web应用。常见的web应用需要从服务器获取数据,而请求方式一般有POST和GET两种,在Vue.js中,使用axios库可方便地进行POST和GET请求。 axios库简介 axios…

    Vue 2023年5月28日
    00
  • 带你一文了解Vue生命周期钩子

    带你一文了解Vue生命周期钩子 Vue生命周期钩子是指Vue在组件实例化、数据更新、渲染页面等不同阶段执行的方法。这些钩子函数对于理解Vue的生命周期非常重要,因为他们使得我们有机会在特定时间节点执行自己的代码。 Vue生命周期的三个阶段 Vue的生命周期可以分为三个主要的阶段: 创建阶段(Creation):在这个阶段Vue实例化组件、设置数据观测、初始化…

    Vue 2023年5月27日
    00
  • 详解vue-cli多页面工程实践

    详解vue-cli多页面工程实践 简介 在实际项目中,往往需要构建多页应用来满足不同的功能需求。本文将详细介绍如何使用vue-cli构建多页应用。 准备工作 安装node.js 安装vue-cli 创建工程 打开终端,执行以下命令来创建vue-cli的多页应用工程: vue init webpack my-project 这里将工程命名为my-project…

    Vue 2023年5月27日
    00
  • SpringBoot项目实现短信发送接口开发的实践

    下面是关于“SpringBoot项目实现短信发送接口开发的实践”的攻略: 1. 场景与背景 在很多应用场景下,我们需要向用户发送短信信息,比如验证码、通知等。本攻略将介绍如何使用 SpringBoot 来快速实现短信发送接口的开发。 2. 技术选型 SpringBoot 阿里云SMS服务 3. 实践步骤 3.1. 创建SpringBoot项目 首先,我们需要…

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