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日

相关文章

  • 手把手搭建安装基于windows的Vue.js运行环境

    下面是手把手搭建安装基于Windows的Vue.js运行环境的完整攻略: 1. 安装Node.js 首先,需要安装Node.js作为运行Vue.js项目的环境。可以从官网https://nodejs.org/en/下载适合自己操作系统的版本进行安装。 安装完成后,可以在命令行工具中输入以下命令来检查安装是否成功: node -v 如果安装成功,则会显示Nod…

    Vue 2023年5月27日
    00
  • Vue配置文件vue.config.js配置前端代理方式

    当我们在开发Vue项目时,有时候需要通过前端代理方式来解决跨域的问题。在Vue项目中实现前端代理的方式有很多种,本文将详细介绍如何通过配置Vue的配置文件vue.config.js实现前端代理方式。 vue.config.js文件 vue.config.js是一个可选的配置文件,如果项目的根目录中存在该文件,则该文件会被@vue/cli-service自动加…

    Vue 2023年5月28日
    00
  • vue如何动态实时的显示时间浅析

    那我来分享一下Vue.js实时显示时间的攻略。 1. 使用Vue.js的生命周期函数 Vue.js生命周期函数是指Vue实例在不同阶段会自动执行的一系列函数。我们可以通过生命周期函数来实现实时显示时间的功能。 具体步骤如下: 1.1 创建一个Vue实例 使用Vue.js创建一个Vue实例,在data属性中新增一个变量time,用于存储当前时间,代码如下: v…

    Vue 2023年5月28日
    00
  • 基于Vue.js实现数字拼图游戏

    以下是“基于Vue.js实现数字拼图游戏”的完整攻略。 1. 准备工作 在开始编写数字拼图游戏之前,我们需要安装Vue.js和一些相关的依赖。可以使用以下命令进行安装: npm install -g vue-cli vue init webpack my-project cd my-project npm install 2. 组件开发 接下来我们需要编写数…

    Vue 2023年5月27日
    00
  • 浅谈vue生命周期共有几个阶段?分别是什么?

    当我们使用Vue.js开发应用时,组件会自动地创建、渲染、更新和销毁,这正是Vue.js的生命周期。Vue.js生命周期可以帮助我们了解整个Vue组件的运行过程,这对于开发和调试Vue应用程序非常有帮助。 Vue.js生命周期共有8个阶段,分别是: beforeCreate:组件实例被创建之初,组件属性计算之前,这个阶段的生命周期函数无法访问到组件的属性和方…

    Vue 2023年5月28日
    00
  • Vue源码之关于vm.$delete()/Vue.use()内部原理详解

    Vue源码之关于vm.$delete()/Vue.use()内部原理详解 Vue.$delete()方法 在Vue中,我们可以使用vm.$delete()方法从Vue实例或嵌套对象中删除响应式属性。这个方法是私有的,也就是说它只存在于Vue内部,并没有对外暴露。下面我们来详细讲解一下Vue.$delete()方法的内部原理。 源码解析 Vue.$delete…

    Vue 2023年5月28日
    00
  • Element UI框架中巧用树选择器的实现

    一、Element UI框架中巧用树选择器的实现 Element UI是一个基于Vue.js的开源组件库,提供了丰富、实用的UI组件,其中树选择器是常用的组件之一。本文将介绍如何巧用树选择器实现多级联动菜单的效果。 二、树选择器的基本用法 在Element UI中,要使用树选择器需要引入以下组件: <template> <el-tree :…

    Vue 2023年5月27日
    00
  • Vue中的nextTick方法详解

    下面是Vue中的nextTick方法详解的完整攻略。 什么是nextTick方法 nextTick方法是Vue提供的一个异步操作工具,它可以让我们在DOM更新之后执行一些操作。它的作用是在下次DOM更新循环结束之后执行延迟回调,用于获得更新后的DOM。因此,使用nextTick方法可以让我们更加方便地操作更新后的DOM。 nextTick方法的基本应用 在V…

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