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.extend构造器的详解

    下面是“Vue.extend构造器的详解”的攻略。 什么是Vue.extend构造器? Vue.extend构造器是Vue.js中的一个重要的API。通过使用Vue.extend构造器,我们可以创建一个Vue.js的子类,也称为Vue组件。Vue组件可以方便地复用,并且可以提高应用程序的性能。 Vue.extend构造器的语法 Vue.extend构造器的语…

    Vue 2023年5月28日
    00
  • Vue的混合继承详解

    Vue的混合继承详解 在Vue中,混合继承(Mixins)是一种非常常用的组件复用方式。它允许我们将多个组件共用的代码提取到一个混合对象中,然后在需要的组件中使用mixins选项进行混合。 一、基本用法 我们将要使用到一个示例,这是一个Vue组件定义的基本结构: Vue.component(‘my-component’, { mixins: [myMixin…

    Vue 2023年5月28日
    00
  • VUE项目初建和常见问题总结

    VUE项目初建和常见问题总结 项目初建 1. 安装Vue脚手架 前置条件:需要已安装Node.js和npm npm是Node.js的包管理器,可以使用以下命令检查Node.js和npm是否已安装: node -v # 查看Node.js版本 npm -v # 查看npm版本 安装Vue脚手架的命令为: npm install -g @vue/cli 2. 创…

    Vue 2023年5月28日
    00
  • vue如何动态加载组件详解

    下面我将详细讲解“vue如何动态加载组件”的攻略。 一、为什么需要动态加载组件? 在一些大型项目中,为了提高页面加载速度和减小打包体积,有时候会将某些组件按需动态加载。这时候如果使用Vue的公共组件库,需要对这些组件进行动态加载。 二、基本实现思路 在Vue中,动态加载组件的实现思路主要有两种方式: 1.通过动态import的方式 动态import的方式是指…

    Vue 2023年5月28日
    00
  • vue props数据传递类型限制方式

    Vue中的props是一种用于父子组件之间传递数据的机制。为了保证数据的正确性和可维护性,我们可以通过对props进行数据传递类型限制方式来限制传递的数据类型,以确保数据能够按照我们的预期运行。 在Vue中,我们可以通过拥有以下数据类型的props: String Number Boolean Array Object Date Function 其中,Ar…

    Vue 2023年5月27日
    00
  • vue如何使用cookie、localStorage和sessionStorage进行储存数据

    让我来为你详细讲解Vue如何使用cookie、localStorage和sessionStorage进行数据储存。 什么是cookie、localStorage和sessionStorage? Cookie:HTTP是一种无状态协议,为了记录用户的状态,引入了cookie技术。Cookie是存储在浏览器中的小型文本文件。它通过在用户计算机中存储信息来跟踪用户…

    Vue 2023年5月27日
    00
  • vue3.0中使用websocket,封装到公共方法的实现

    接下来我将详细讲解如何在vue3.0中使用websocket,并将其封装成公共方法。同时,我会提供两条示例来说明具体的实现过程。 前置知识 在继续阅读本文之前,你需要掌握以下技能: 了解 Vue3.0 的基本语法; 知道如何使用 WebSocket; 理解 JavaScript 中的 Promise。 如果你尚未掌握上述知识,建议你先花费一定时间学习这些基础…

    Vue 2023年5月28日
    00
  • 完美解决通过IP地址访问VUE项目的问题

    为了通过IP地址访问Vue项目,需要完成以下几个步骤: 步骤一:打包Vue项目 在命令行中运行以下指令,把Vue项目打包: npm run build 这个指令会在项目的根目录下创建一个 dist 文件夹,并且在里面生成打包之后的文件。这是一个静态资源的文件夹,里面包含了HTML、CSS和JavaScript等文件。 步骤二:安装web服务器 为了运行在客户…

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