vue Watch和Computed的使用总结

我来为你详细讲解“vue Watch和Computed的使用总结”的完整攻略。

什么是vue Watch和Computed

Vue.js开发中,数据的状态更新非常频繁,因此需要工具来监听并响应数据变化。Vue Watch和Computed都是解决Vue数据变化监听的两个方案。

Watch是一种对数据进行监听并做出相应的方案,当监听的数据发生变化时,会立即触发一个回调函数。而Computed是一种通过计算衍生出新的数据,当依赖的数据改变时才会触发重新计算。

Watch的使用

Watch是Vue的一个实例方法,我们可用在这个方法中观察一个数据的变化。其实,我们最常用的情况就是监听某个具体的,需要改变应用状态的数据的变化。

// 组件
export default {
  data() {
    return {
      count: 0,
    }
  },
  watch: {
    count(newValue, oldValue) {
      console.log(`count 的值从 ${oldValue} 变成了 ${newValue}`);
    }
  }
}

在组件实例上定义了一项名叫 count 的数据,然后在 watch 中观察 count 数据的变化。当 count 数据变化时, Vue 会自动调用回调函数。在回调函数中会传入新值和旧值,我们可以在这里做出进一步的处理。

Computed的使用

Computed是Vue的一个计算属性,它可以依赖已有的数据计算出新的数据,当依赖的数据改变时,它也会跟着更新。

<template>
  <div>
    <p>员工姓名:{{userInfo.name}}</p>
    <p>员工年龄:{{userInfo.year}}</p>
    <p>员工性别:{{userInfo.sex}}</p>
    <p>员工级别:{{userInfo.level}}</p>

    <hr>
    <p>该员工是否升职:{{isPromote}}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: '小明',
      year: 28,
      sex: '男',
      level: 5
    }
  },
  computed: {
    userInfo() {
      return {
        name: this.name,
        year: this.year,
        sex: this.sex,
        level: this.level
      }
    },
    isPromote() {
      return this.level >= 5 ? '是' : '否'
    }
  }
}
</script>

在该示例中,我们定义了一个名叫 userInfo 的计算属性,它依赖了组件中的多个 data 数据。最后我们将该计算属性在模板中渲染出来,当某个依赖数据发生改变时,该计算属性会重新计算并渲染到页面上。

总结

Watch和Computed都是用于解决Vue数据变化监听的方案,Watch是对具体的数据进行监听并做出相应的方案,而Computed是通过计算生成衍生的新数据,并且能够依赖其他数据的变化做出响应。下面是使用 build-in component 的 demo

<template>
  <div>
    <input v-model="msg">
    <br>
    {{ counter }}
    <br>
    {{ reversedMsg }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'hello',
      counter: 1
    }
  },
  watch: {
    msg: function (newVal, oldVal) {
      console.log(newVal, oldVal, 'msg changed')
      this.counter++
    }
  },
  computed: {
    reversedMsg: function () {
      console.log('reversedMsg')
      return this.msg.split('').reverse().join('')
    }
  }
}
</script>

在这个示例中,我们使用 watch 监视了 msg 的变化,并将其同步到计数器 counter 上,同时,我们还使用了计算属性 reversedMsg 生成了基于 msg 的一个衍生数据,在msg改变时完整触发了计算和更新,实现了 watch 和 computed 的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue Watch和Computed的使用总结 - Python技术站

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

相关文章

  • element-ui图片上传组件查看和限制方式

    下面是element-ui图片上传组件查看和限制方式的完整攻略。 概述 在vue项目中,我们通常使用element-ui组件库来快速构建界面。element-ui封装了很多常用的组件,包括图片上传组件。图片上传组件可以帮助我们方便地上传和查看图片,并且还可以限制上传图片的大小和格式,保证上传图片的质量和量。 下面分别介绍图片上传组件的查看和限制方式。 查看方…

    Vue 2023年5月28日
    00
  • Vue实现搜索 和新闻列表功能简单范例

    Vue实现搜索功能简单范例 为了实现搜索功能,我们需要在Vue组件中引入双向绑定v-model和v-on指令,并绑定一个输入框元素,如下所示: <template> <div> <input type="text" v-model="searchTerm" v-on:change=&quo…

    Vue 2023年5月29日
    00
  • ant design vue 表格table 默认勾选几项的操作

    Ant Design Vue 表格(Table)默认勾选几项的操作,可以通过在表格数据中为需要默认勾选的行数据添加一个 selected 属性,并且在表格操作栏添加一个全选按钮,并将其与表格的 rowSelection 属性绑定起来即可实现。 以下是完整的实现步骤: 设置表格数据源 首先,需要设置表格的数据源,可以使用一个数组对象来模拟,示例代码如下: da…

    Vue 2023年5月28日
    00
  • Vue2为何能通过this访问到data与methods的属性

    Vue2为何能通过this访问到data与methods的属性,主要是因为Vue在实例化时做了以下几件事情: 首先,Vue将传入的数据对象和方法对象进行响应式处理,利用Object.defineProperty()方法重写了属性的setter和getter方法,实现了双向绑定和数据监听等功能。 接着,Vue将处理后的数据对象和方法对象挂载在实例对象上,通过t…

    Vue 2023年5月28日
    00
  • vue.js中ref和$refs的使用及示例讲解

    Vue.js中ref和$refs的使用及示例讲解 什么是ref 在Vue.js中,ref是用来获取元素或组件标识的指令,相当于“id”或“class”属性,我们可以在Vue实例中通过$refs对象访问它们。主要有以下两种用法: 1.在DOM元素上使用ref 在DOM元素上使用ref可以获取DOM节点元素,我们可以通过引用这个DOM节点元素,使用原生JavaS…

    Vue 2023年5月28日
    00
  • vue项目接口管理,所有接口都在apis文件夹中统一管理操作

    当我们在开发Vue项目时,通常需要与后端进行交互,而后端接口的管理十分重要。为了更好的管理接口,一种比较好的方式是采用apis文件夹来统一管理操作所有接口。 实现该功能需要遵循以下几步骤: 创建apis文件夹 在Vue项目下面src目录下创建一个apis文件夹。这个文件夹将存放与后端接口相关的文件。 定义接口文件 在apis文件夹下创建一个user.js的文…

    Vue 2023年5月28日
    00
  • vue项目打包后,由于html被缓存导致出现白屏的处理方案

    当 Vue 项目部署到线上服务器时,我们可能会遇到“白屏”问题,此现象通常是由于浏览器缓存的 HTML 文件。为了解决这种问题,我们可以尝试以下几种处理方案: 1. 在 index.html 中设置 meta 标签 在 index.html 文件的 head 标签里添加如下代码,告诉浏览器不要缓存: <meta http-equiv="Pra…

    Vue 2023年5月28日
    00
  • Vue精简版风格概述

    Vue精简版风格概述 什么是Vue精简版风格? Vue精简版风格是使用Vue框架开发大型Web应用程序的一种设计风格。它强调组件化和功能模块化,以简化应用程序代码的维护和扩展。 Vue精简版风格的设计原则 Vue精简版风格的设计原则包括: 单一职责原则:每个组件只负责一个功能。 组件化:将UI和业务逻辑封装为组件。 功能模块化:将应用程序分解成功能模块,每个…

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