Vue中watch、computed、updated三者的区别及用法

Vuewatchcomputedupdated这三个属性都是用于监听数据变化的,但是它们的用法和作用方式是不同的。

watch

watch用于侦听某个数据值的变化,当被侦听的数据发生变化时,系统就会自动调用watch的回调函数。

watch: {
  someData: function (newVal, oldVal) {
    // do something when someData has been changed
  }
}

上述代码中,someData就是要被侦听的数据,newValoldVal分别为新值和旧值。回调函数中可以针对someData的变化做出相应的处理,比如执行一些必要的操作或更新其他的组件等。

computed

computed用于计算属性,根据已有的数据计算出新的数据。与watch不同的是,computed是基于依赖的缓存,只有当依赖数据发生改变时,computed才会重新计算,否则直接返回之前的缓存结果。

computed: {
  someComputedData: function () {
    // compute some data based on someOldData
    return someNewData
  }
}

上述代码中,someOldData是依赖数据,它的变化会引发someComputedData的重新计算,从而得出someNewData,也就是新的数据。

updated

updated是一个生命周期钩子函数,用于监听数据变化后,Vue实例完成更新后所触发的回调。

updated: function () {
  // do something after the component has been updated
}

当数据发生变化后,组件重新渲染时,updated函数就会被调用。通常可以在这个函数内部执行一些DOM操作或其他的必要的逻辑。

下面给出一个使用范例:

<template>
  <div>{{ someData }}</div>
</template>

<script>
export default {
  data () {
    return {
      someData: 'Hello, world!'
    }
  },
  watch: {
    someData: function (newVal, oldVal) {
      console.log(`Watch: "${oldVal}" -> "${newVal}"`)
    }
  },
  computed: {
    reversedData: function () {
      return this.someData.split('').reverse().join('')
    }
  },
  updated: function () {
    console.log('Updated')
  }
}
</script>

上述代码中,我们定义了一个组件,并在其中定义了一个数据someData,还定义了一个watch函数、一个计算属性reversedData和一个updated函数。

当你启动这个组件,打开控制台,可以看到这个组件的初始化日志以及watchcomputedupdated的运作方式。

# 初始化日志
Watch: "undefined" -> "Hello, world!"
Updated

# 修改someData的值
Watch: "Hello, world!" -> "Hello, Vue!"
Updated

# 修改someData的值
Watch: "Hello, Vue!" -> "Jessie, hi!"
Updated

综上所述,watchcomputedupdated三个属性的区别就在于它们的作用方式和使用场景不同。在具体应用时,应根据具体的需求来选择使用哪个属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue中watch、computed、updated三者的区别及用法 - Python技术站

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

相关文章

  • element如何初始化组件功能详解

    在使用Vue.js开发应用时,我们通常会使用Element UI这样的第三方UI组件库来快速搭建和设计我们的应用。Element UI提供了很多常用的UI组件和工具,如表单、按钮、弹窗、分页、图表等,以及主题定制等功能,方便了我们进行快速开发。但在使用之前,需要了解Element组件的初始化。 首先,我们需要安装Element UI,使用npm安装命令: n…

    Vue 2023年5月28日
    00
  • vue前端重构computed及watch组件通信等实用技巧整理

    Vue前端重构:computed及watch组件通信等实用技巧整理 前言 在Vue的开发过程中,我们时常需要对一些复杂的数据进行计算和转换,而Vue提供的computed属性能够很好地满足我们这方面的需求。此外,Vue还提供了watch属性来监控特定的数据变化。本文主要介绍computed及watch的使用方法和相关实用技巧。 computed属性的使用 c…

    Vue 2023年5月28日
    00
  • JS实现调用本地摄像头功能示例

    下面是关于JS实现调用本地摄像头功能的完整攻略: 1、需求分析 在Web前端应用中,有时需要使用到调用本地摄像头的功能。比如视频聊天、视频录像等等。因此,我们需要学习如何使用JS来调用本地摄像头,并将摄像头拍摄的视频数据展示在Web页面上。 2、使用getUserMedia实现调用本地摄像头 HTML5提供了一个功能强大的API——getUserMedia,…

    Vue 2023年5月28日
    00
  • 分分钟玩转Vue.js组件(二)

    让我来详细讲解一下“分分钟玩转Vue.js组件(二)”的完整攻略。 简介 Vue.js 是一款非常流行的 JavaScript 库,用于构建用户界面。Vue.js 具有简单易学、轻量灵活、响应式渲染及组件化等特点, 非常适合构建现代化的 Web 应用程序。 本篇文章将带大家深入了解 Vue.js 中的组件化,在掌握基本概念后,教你如何使用 Vue.js 构建…

    Vue 2023年5月27日
    00
  • 使用Vue开发自己的Chrome扩展程序过程详解

    使用Vue开发自己的Chrome扩展程序 开发Chrome扩展程序可以用于个性化配置Chrome浏览器功能,同时也是Chrome浏览器生态中非常重要的一部分。本篇文章将会向你详细讲解如何使用Vue开发自己的Chrome扩展程序。 准备工作 首先,需要安装最新版的Node.js和 Vue CLI工具。安装完成后,使用以下命令创建一个基于 Vue 的 Chrom…

    Vue 2023年5月27日
    00
  • 为什么vue中不建议使用空字符串作为className

    在Vue中使用类名时,应尽量避免空字符串作为类名,以下是原因及解决方案: 1. 空字符串无法清除类名 在Vue中使用 v-bind:class 绑定类名时,空字符串会被视为有效的类名。当我们通过更改 data 中的属性值来更改类名时,空字符串也会作为一个类名被添加。但是,一旦添加上了空字符串,就无法通过更改该属性值来清除这个空字符串类名。 示例代码: &lt…

    Vue 2023年5月27日
    00
  • vue实现实时搜索显示功能

    要实现Vue实时搜索显示功能,有以下几个步骤: 创建Vue实例 绑定数据 创建搜索过滤器 创建搜索输入框 显示搜索结果 下面我们来详细讲解这个完整攻略。 创建Vue实例 首先要创建Vue实例,这可通过引入Vue库来实现。需要在HTML文件中引入如下代码: <script src="https://cdn.jsdelivr.net/npm/vu…

    Vue 2023年5月27日
    00
  • 如何修改Vue项目运行的IP和端口

    当我们开发 Vue.js 项目时,默认情况下,项目运行在本地的 IP 地址和端口上。但是有些情况下,我们可能需要修改这些默认设置。下面是详细讲解如何修改 Vue.js 项目运行的 IP 和端口的攻略: 1. 修改 package.json 文件中的 scripts 配置 Vue.js 项目的 package.json 文件中有一项 scripts,其中包含了…

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