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日

相关文章

  • ElementUI时间选择器限制选择范围disabledData的使用

    为了让大家更好地理解“ElementUI时间选择器限制选择范围disabledData的使用”,我们将分为以下几个步骤进行详细讲解: 安装ElementUI 创建一个ElementUI时间选择器组件 使用disabledData属性,限制时间选择器的选择范围 示例一: <template> <el-date-picker v-model=&…

    Vue 2023年5月29日
    00
  • Vue中.env、.env.development及.env.production文件说明

    在Vue项目中,.env、.env.development及.env.production文件是用来保存环境变量的配置文件。这些文件是通过webpack的DefinePlugin插件实现的,可以实现在不同的环境下加载不同的配置。 .env文件 .env文件是包含在所有环境中的通用配置,process.env对象可以访问它定义的所有变量。比如,我们可以在.en…

    Vue 2023年5月27日
    00
  • vue v-for循环出来的数据动态绑定值问题

    当使用Vue的v-for指令循环展示数据时,我们需要注意数据与状态的动态绑定问题。本文将详细讲解使用v-for指令循环展示数据时,因为数据改变而导致状态动态绑定的问题及解决方法。 问题现象 假设有如下一段v-for指令: <div v-for="item in items"> <input type="text…

    Vue 2023年5月29日
    00
  • vue项目配置使用flow类型检查的步骤

    对于准备使用Flow类型检查的Vue项目,需要按照以下步骤进行配置: 1. 配置Flow Vue项目中使用Flow类型检查需要在项目中安装flow-bin和flow-typed这两个依赖。可以使用以下命令安装: npm install –save-dev flow-bin flow-typed 在项目根目录下,运行以下命令进行Flow的初始化: ./nod…

    Vue 2023年5月27日
    00
  • 用vuex写了一个购物车H5页面的示例代码

    下面就是使用Vuex写购物车H5页面的攻略,具体步骤如下: 1. 安装所需依赖 首先,在终端中切换到你的项目目录下,使用以下命令安装所需依赖: npm install vuex –save-dev 2. 创建Vuex store 在src目录下创建store目录,并在其中创建index.js文件。在index.js文件中,先引入Vue和Vuex: impo…

    Vue 2023年5月27日
    00
  • 基于axios封装fetch方法及调用实例

    基于axios封装fetch方法及调用实例,可以按照以下步骤进行: 第一步:安装和引入axios 安装axios: npm install axios –save 引入axios: import axios from ‘axios’; 第二步:封装fetch方法 封装fetch方法的主要目的是简化axios的使用,提高代码的可复用性。这里我们将会封装一个g…

    Vue 2023年5月28日
    00
  • vue中是怎样监听数组变化的

    Vue中如何监听数组变化是一个非常常见的问题,下文将详细讲解如何监听和响应数组变化。 Vue2.x版本中数组的响应式原理 Vue2.x版本中采用了 Object.defineProperty 方法来实现数组的响应式,Vue将数组的一些修改原生方法(比如push、pop、shift等)进行了覆盖,使之成为可观测的。Vue 内部为每个数组设置了一个原型对象,继承…

    Vue 2023年5月28日
    00
  • SpringBoot+VUE实现数据表格的实战

    我来详细讲解“SpringBoot+VUE实现数据表格的实战”的完整攻略。我们将分为以下几个步骤: 搭建前端项目 首先,我们需要在计算机上安装Node.js和Vue Cli脚手架工具。安装完成后,在终端中执行以下命令来创建一个新的Vue.js项目: vue create projectname 其中“projectname”是你的项目的名称。在创建过程中,你…

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