vue中watch和computed的区别与使用方法

yizhihongxing

下面我就给您详细讲解“Vue中watch和computed的区别与使用方法”。

Watch和Computed的区别

Vue中的Watch和Computed都是Vue.js中的计算属性,但是两者是不同的。

Watch的作用是监听数据的变化,当数据变化时执行相应的操作,类似于Observer模式的实现,通常用于监听某个值的变化并执行异步操作或复杂逻辑。

Computed的作用是根据已有的数据进行计算,生成新的值作为计算结果,这种计算属性会使用缓存,只有当依赖的数据发生变化时,才会重新计算,通常用于复杂数据关联的计算,以及大量简单数据的计算重用。

Watch的使用方法

Watch的定义方式包括两种,一种是简单的Watcher函数,另一种是对象Watch。

简单的Watcher函数

Watcher函数会接收到两个参数:newVal和oldVal,当监听的数据变化时,Watcher函数会被调用。

watch: {
  data: function(newVal, oldVal) {
    // 数据变化的操作
    console.log(newVal, oldVal);
  }
}

对象Watch

对象Watch可以监听到多个key的变化,这是使用Watcher函数无法实现的。

watch: {
  // 监听data、config的变化
  'data, config': {
    handler: function(val, oldVal) {
      console.log(val, oldVal)
    },
    deep: true //确保对象内部所有的变化都被监听到
  }
}

Computed的使用方法

Computed属性定义时,需要一个函数和一个return语句,函数中处理要计算的逻辑,计算完成后,返回结果作为计算属性的值,并且这个值会被计算属性缓存,只有当计算属性依赖的数据发生变化时,才会重新计算。

computed: {
  reversedMessage: function () {
    return this.message.split('').reverse().join('')
  }
}

Watch和Computed的示例说明

Watch的示例

我们可以通过Watch监听到组件props的变化,并在变化时用新值渲染组件。

  props: ['content'],
  watch: {
    'content': function(newVal, oldVal) {
      this.render()
    }
  },
  methods: {
    render: function() {
      //渲染组件
    }
  },

Computed的示例

我们可以使用Computed计算一段文字中的字数,并在模板中动态绑定这个计算的结果。

  data: {
    text: 'Hello World!'
  },
  computed: {
    wordCount: function () {
      return this.text.length
    }
  },

模板中的绑定方式:

  <div>{{ text }}</div>
  <div>{{ wordCount }} words</div>

这种实现方式,wordCount只会在text的值发生改变时更新其值,避免了频繁更新。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中watch和computed的区别与使用方法 - Python技术站

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

相关文章

  • vue+el-upload实现多文件动态上传

    要实现多文件动态上传,我们可以使用Vue.js提供的el-upload组件来实现。下面是实现此功能的具体步骤: 步骤1:安装el-upload npm install element-ui -S 步骤2:导入el-upload组件 在Vue组件中导入el-upload组件。在main.js文件中引入element-ui: import Vue from ‘v…

    Vue 2023年5月28日
    00
  • vue3+ElementPlus使用lang=”ts”报Unexpected token错误的解决办法

    首先需要明确的是,vue3和ElementPlus均支持使用TypeScript语言进行开发,因此我们可以使用lang=”ts”来指定代码的语言类型。但是,如果在使用过程中出现了Unexpected token错误,需要进行以下的解决办法。 确认项目是否已经安装了必要的依赖 在使用TypeScript时,我们需要安装一些必要的依赖,例如ts-loader、t…

    Vue 2023年5月28日
    00
  • 基于vue3.0.1beta搭建仿京东的电商H5项目

    下面我来为您详细讲解“基于vue3.0.1beta搭建仿京东的电商H5项目”的完整攻略。 准备工作 首先,需要安装 Node.js 和 NPM,可以到官网下载并安装。 然后,安装 Vue CLI 3,可以使用如下命令: npm install -g @vue/cli 创建项目 接下来,我们可以使用 Vue CLI 3 创建一个基于 Vue 3.0 的项目。可…

    Vue 2023年5月27日
    00
  • 前端大文件上传与下载(分片上传)的详细过程

    前端大文件上传和下载一般采用分片上传和下载的方式,确保上传和下载的大文件不会占用过多的带宽和服务器资源。以下是前端大文件上传和下载的详细过程: 前端大文件上传的详细过程 前端将文件分片,每片数据大小和数量根据实际需求决定,一般大小为1MB – 5MB,数量为10 – 100片。可以使用FileReader API将文件读取为二进制流,然后根据分片大小对二进制…

    Vue 2023年5月28日
    00
  • vue3 源码解读之 time slicing的使用方法

    Vue3 源码解读之 time slicing 的使用方法 简介 time-slicing 是一种将任务拆分为多个小任务,分散到渲染帧之间执行的技术。Vue3 在异步更新和大型列表渲染问题上 应用了 time-slicing 技术,以加快页面渲染速度。本篇文章将探讨 time-slicing 的使用方法,通过实例帮助我们理解这个 新特性。 使用方法 尽管 V…

    Vue 2023年5月29日
    00
  • Vue组件如何设置Props实例详解

    下面我详细讲解一下“Vue组件如何设置Props实例详解”的完整攻略。 什么是Props 在 Vue.js 中,父组件和子组件之间可以通过 props 传递数据。props 是一个接收组件传递数据的属性,并且只能从父组件传递到子组件。 使用 props 可以让我们对组件进行配置,父组件可以传递数据给子组件,子组件可以使用这些数据作为自己的属性。 如何设置 P…

    Vue 2023年5月27日
    00
  • Vue.js学习笔记之修饰符详解

    Vue.js是一款流行的JavaScript框架,使用Vue.js可以简化Web应用程序的开发。其中修饰符是Vue.js提供的一种高级技术,可以扩展指令的行为。本文将为大家提供Vue.js修饰符的详解。 修饰符是什么 在Vue.js中,指令是带有前缀v-的特殊属性。指令带有参数和修饰符,指令的行为可以由参数和修饰符来控制。修饰符可以在指令后面的点号后面添加,…

    Vue 2023年5月27日
    00
  • vue的.vue文件是怎么run起来的(vue-loader)

    Vue.js是一个渐进式JavaScript框架,它允许开发者使用组件和模块的方式构建大型Web应用。Vue.js的核心只关注视图层,因此它非常容易与其他库或现有项目集成。Vue-loader是Vue项目中用来编译.vue文件的一个插件。Vue-loader会将.vue文件编译成JavaScript模块并且能够让浏览器理解它们。本攻略将会讲解Vue的.vue…

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