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

下面我就给您详细讲解“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中自定义指令(directive)的基本使用方法

    Vue中自定义指令的基本使用方法 什么是指令 Vue的指令(Directive)是一种特殊的指令语法,其作用是对HTML元素进行特定的操作。Vue内置了很多指令,如v-model、v-if、v-bind等。Vue还提供了一种自定义指令的方式,方便我们扩展指令。 注册指令 注册指令的方式有两种,全局注册和局部注册。 全局注册: Vue.directive(‘m…

    Vue 2023年5月28日
    00
  • vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

    下面我将详细讲解Vue CLI脚手架基于Nightwatch的端到端测试环境的过程。 简介 Vue CLI是Vue.js官方提供的一个标准工具,用于快速构建基于Vue.js的单页应用和组件库。而Nightwatch是一个基于Node.js和Webdriver API的可扩展自动化测试框架,它可以实现端到端的自动化测试。Vue CLI利用Nightwatch提…

    Vue 2023年5月29日
    00
  • 实时通信Socket io的使用示例详解

    实时通信Socket io的使用示例详解 Socket.io是一个基于WebSockets的实时通信协议,可以让浏览器和服务器之间建立长连接,实现实时的双向通信。下面将详细介绍Socket.io使用示例。 安装Socket.io 首先需要在服务器环境中安装Socket.io。可以通过npm进行安装,执行以下命令: npm install socket.io …

    Vue 2023年5月28日
    00
  • vue基础之模板和过滤器用法实例分析

    让我来为你详细讲解“Vue基础之模板和过滤器用法实例分析”的完整攻略。 一、模板用法示例 1.1 双花括号语法 Vue 的模板语法基于 HTML,并扩展了一些特殊的属性。其中,最常用的是双花括号语法,通过它可以将 Vue 实例中的数据进行渲染。 例如,我们可以使用以下模板代码将 Vue 实例中的 message 数据渲染到页面中: <div id=&q…

    Vue 2023年5月27日
    00
  • Vue中数组与对象修改触发页面更新的机制与原理解析

    让我来为您详细讲解Vue中数组与对象修改触发页面更新的机制与原理解析。 1. Vue中数组的更新机制及原理 在Vue中,要想让视图更新,必须通过数据绑定来实现。Vue中对于数组的变异方法也做了响应式处理,即通过Proxy或Object.defineProperty等技术实现了对数组元素进行监视,并在数组被改变时自动更新视图。 具体来说,当一个响应式数据被渲染…

    Vue 2023年5月27日
    00
  • Vue 框架之键盘事件、健值修饰符、双向数据绑定

    Vue 框架之键盘事件、健值修饰符、双向数据绑定 键盘事件 Vue 中可以通过 v-on 指令来绑定 DOM 事件,在处理键盘事件时也不例外。我们可以使用 Vue 提供的 @keydown 和 @keyup 来绑定键盘事件,比如: <template> <div> <p>按下的键盘键是:{{key}}</p> …

    Vue 2023年5月27日
    00
  • vue2.0开发实践总结之入门篇

    Vue2.0开发实践总结之入门篇 介绍 本文主要介绍Vue2.0入门开发实践总结,旨在帮助前端开发者快速上手Vue2.0。文章扼要概括了Vue2.0的基本特性和应用场景,让读者了解Vue2.0的优点和使用价值,同时,结合具体的应用实例进行讲解,方便读者理解掌握Vue2.0的开发流程。 基本特性 Vue2.0是一款轻量、快速、易用的MVVM前端框架,具有以下几…

    Vue 2023年5月27日
    00
  • Vue实现选择城市功能

    Vue实现选择城市功能可以分为以下步骤: 1. 引入第三方城市数据 为了实现城市选择功能,我们需要先引入第三方城市数据,这里可以选择 city.json 这个json文件,里面包含了全国各个城市的数据。 2. 安装并引入element-ui组件库 Vue框架本身并不提供选择框组件,所以我们需要借助第三方的UI组件库。这里我们选择element-ui组件库,并…

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