vue中的计算属性和侦听属性

yizhihongxing

当我们在使用Vue.js开发Web应用时,有时我们需要根据某些状态进行计算,计算属性和侦听属性是Vue.js为我们提供的两种响应式的计算机制。本文将详细讲解vue中的计算属性和侦听属性的完整攻略。

计算属性

什么是计算属性

计算属性指的是在模板中使用时,通过计算属性函数的返回值来得到一个新的值,这个新的值能够自动触发页面重新渲染。

计算属性的用法

计算属性的定义方式如下:

computed: {
  prop1: function () {
    // 计算逻辑
    return someValue;
  }
}

其中,prop1 表示计算属性的名称,someValue 表示计算结果的值,计算逻辑就在 function 中实现。

在组件的模板中,我们可以直接使用 prop1 进行渲染,如下所示:

<div>
  {{prop1}}
</div>

计算属性将在页面渲染时自动计算,并返回计算结果的值,同时触发页面重新渲染。

计算属性的示例1

假设我们需要在页面中展示一个商品的总价格,这个总价格等于商品数量和单价的乘积。我们可以使用计算属性来计算这个商品的总价格,示例代码如下:

<template>
  <div>
    <span>单价:{{price}}元</span>
    <span>数量:{{quantity}}个</span>
    <span>总价格:{{totalPrice}}元</span>
  </div>
</template>
<script>
export default {
  name: "Goods",
  data() {
    return {
      price: 10,
      quantity: 2
    }
  },
  computed: {
    totalPrice: function () {
      return this.price * this.quantity;
    }
  }
}
</script>

上面的示例中,我们定义了一个计算属性 totalPrice,它的计算逻辑为 price * quantity,在页面中使用 totalPrice 来展示商品的总价格。

计算属性的示例2

我们可以使用计算属性来格式化时间,示例代码如下:

<template>
  <div>
    <span>当前时间:{{currentTime}}</span>
  </div>
</template>
<script>
export default {
  name: "Time",
  computed: {
    currentTime: function () {
      let date = new Date();
      let hour = date.getHours();
      let minute = date.getMinutes();
      let second = date.getSeconds();
      let time = `${hour}:${minute}:${second}`;
      return time;
    }
  }
}
</script>

上面的示例中,我们定义了一个计算属性 currentTime,它的计算逻辑为获取当前的时间,并根据时、分、秒来格式化时间。

侦听属性

什么是侦听属性

侦听属性的作用是当一个数据发生变化时,执行一些特定的操作,实现数据的自动更新。

侦听属性的用法

侦听属性的定义方式如下:

watch: {
  prop1: function (value, oldValue) {
    // value表示新的值,oldValue表示旧的值
    // 执行相关操作
  }
}

watch 中我们可以定义一个函数,当 prop1 的值发生变化时,这个函数将会被调用。在这个函数中我们可以执行一些特定的操作来更新UI界面。

侦听属性的示例1

我们可以使用侦听属性来监听商品数量的变化,并更新商品的总价格,示例代码如下:

<template>
  <div>
    <span>单价:{{price}}元</span>
    <span>数量:<input type="number" v-model="quantity" /></span>
    <span>总价格:{{totalPrice}}元</span>
  </div>
</template>
<script>
export default {
  name: "Goods",
  data() {
    return {
      price: 10,
      quantity: 2,
      totalPrice: 0
    }
  },
  watch: {
    quantity: function (value, oldValue) {
      this.totalPrice = value * this.price;
    }
  }
}
</script>

上面的示例中,我们为 quantity 定义了一个侦听属性,每当 quantity 的值发生变化时,侦听属性中的函数将会被调用,并更新 totalPrice

侦听属性的示例2

我们可以使用侦听属性来监听窗口大小的变化,并更新UI界面,示例代码如下:

<template>
  <div>
    <span>宽度:{{width}}像素</span>
    <span>高度:{{height}}像素</span>
  </div>
</template>
<script>
export default {
  name: "WindowSize",
  data() {
    return {
      width: window.innerWidth,
      height: window.innerHeight
    }
  },
  watch: {
    width: function (value, oldValue) {
      console.log('宽度变化了:', value, oldValue);
    },
    height: function (value, oldValue) {
      console.log('高度变化了:', value, oldValue);
    }
  },
  mounted() {
    window.addEventListener('resize', () => {
      this.width = window.innerWidth;
      this.height = window.innerHeight;
    });
  }
}
</script>

上面的示例中,我们定义了两个侦听属性 widthheight,监听窗口大小的变化,并在UI界面进行输出。

总结

计算属性和侦听属性是Vue.js为我们提供的两种响应式的计算机制,其中,计算属性能够根据某个状态进行计算,侦听属性能够根据某状态的变化进行自动更新,可帮助我们快速实现复杂的逻辑,提高开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中的计算属性和侦听属性 - Python技术站

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

相关文章

  • Vue Element前端应用开发之常规Element界面组件

    下面我将为你详细讲解Vue Element前端应用开发之常规Element界面组件的完整攻略。 什么是Element UI组件库? Element UI是一个基于Vue.js开发的组件库,具有丰富的UI组件和交互行为,适用于快速开发,提供了一组优雅、高效的基础组件,极大地减轻了开发人员的工作量。 安装Element UI 安装Element UI的方式有以下…

    Vue 2023年5月28日
    00
  • vue基于Element构建自定义树的示例代码

    下面是针对“vue基于Element构建自定义树的示例代码”的完整攻略,希望能够帮到你: 步骤一:安装Element依赖 首先,在使用Element构建自定义树之前,需要先安装Element组件库。可以通过npm或yarn来完成安装: npm i element-ui -S 或者 yarn add element-ui 步骤二:引入Element 在Vue项…

    Vue 2023年5月28日
    00
  • 使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能

    使用Bootstrap + Vue.js来实现动态表格展示、新增和删除功能需要进行以下步骤: 步骤一:引入所需库 在项目中引入Bootstrap和Vue.js两个库,可以使用CDN或在本地引入。 <!– 引入Bootstrap CSS文件 –> <link rel="stylesheet" href="ht…

    Vue 2023年5月27日
    00
  • vue3.0 CLI – 2.6 – 组件的复用入门教程

    下面我将详细讲解“vue3.0 CLI – 2.6 – 组件的复用入门教程”的完整攻略。 1. 什么是组件? 在 Vue 中,组件是一种可复用的、独立的模块,用于封装相关的 HTML、CSS 和 JavaScript。组件的出现可以让 Web 应用程序更轻松地维护和扩展。 2. 组件的创建 在 Vue 中,用 Vue.component 方法来创建组件。例如…

    Vue 2023年5月27日
    00
  • 关于vue中ref的使用(this.$refs获取为undefined)

    “关于vue中ref的使用(this.$refs获取为undefined)”这个问题,主要是由于vue的生命周期引起的。在组件的生命周期函数created()回调函数中是无法访问到DOM元素上的ref属性的,当然通过$refs也是无法获取到。因为这个时候组件还未被渲染出来,也就是所使用的DOM元素还不存在。所以,在组件的生命周期函数mounted()回调函数…

    Vue 2023年5月27日
    00
  • Vue实现万年日历的示例详解

    下面是“Vue实现万年日历的示例详解”的完整攻略。 什么是万年日历? 万年历是一种用于了解日期和节气变化的工具。它可以显示某一年的每个月份的日历,同时也可以显示节气和一些重要的农历节日。在日常生活中,万年历常常被用于查询特定日期的星期几、农历日期等信息。 如何使用Vue实现万年日历? 以下是使用Vue实现万年日历的步骤: 第一步:创建Vue应用程序 在htm…

    Vue 2023年5月29日
    00
  • Vue package.json配置深入分析

    下面是“Vue package.json配置深入分析”的详细攻略: 前言 package.json是Node.js项目的核心文件,其中包含了项目所需的依赖、启动脚本、打包配置等信息。在Vue项目中,package.json也起着非常重要的作用。 本文将分析Vue项目中package.json的配置项,并且对于一些重要的配置项,提供示例说明。 了解Vue项目中…

    Vue 2023年5月28日
    00
  • Mock.js的安装与使用教程(摆脱后端同学的束缚)

    下面我会详细讲解”Mock.js的安装与使用教程(摆脱后端同学的束缚)”的完整攻略。 1. 简介 Mock.js是一个模拟数据生成器,可以用于前端开发中的接口测试、调试和前后端分离开发。Mock.js提供了丰富的数据类型、生成规则,可以生成符合规范的模拟数据,简化前端开发流程,提高开发效率。 2. 安装 2.1 npm安装 Mock.js是一个npm包,可以…

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