Vue.js每天必学之计算属性computed与$watch

下面是详细讲解 Vue.js 中计算属性 computed 与 $watch 的攻略。

计算属性 computed

概念

计算属性是一种带有缓存功能的属性,它依赖于其它属性值,并且其返回值会根据这些被依赖的值变化而改变。计算属性除了需要响应式依赖,还可以拥有自己的缓存,只要它所依赖的属于没有发生改变,那么多次读取该计算属性时,只会进行一次计算。

用法

我们可以在 Vue 组件的 computed 选项中定义计算属性,computed 的属性值应该是一个返回数据的函数。在模板中使用计算属性时就像使用普通属性一样,我们可以像绑定普通属性一样绑定计算属性,例如:{{computedProp}}。

示例说明

下面我们来看两个问题,如何将价格转换为美元($)和欧元(€)。对于上述问题,可以使用计算属性来实现。

<template>
  <div>
    <h2>价格</h2>
    <p>原价:{{price}}元</p>
    <p>美元价格:{{priceDollar}}$</p>
    <p>欧元价格:{{priceEuro}}€</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      price: 100,
      exchangeRate: {
        dollar: 0.14,
        euro: 0.118,
      },
    };
  },
  computed: {
    priceDollar() {
      return (this.price * this.exchangeRate.dollar).toFixed(2);
    },
    priceEuro() {
      return (this.price * this.exchangeRate.euro).toFixed(2);
    },
  },
};
</script>

在上面的代码中,我们定义了一个 price 属性表示价格,exchangeRate 属性表示汇率,我们分别定义了两个计算属性 priceDollar 和 priceEuro,在 priceDollar 中通过乘以相应汇率计算了美元价格,在 priceEuro 中通过乘以相应汇率计算了欧元价格。最后在模板中分别使用了 priceDollar 和 priceEuro 来展示相应的价格。

$watch

概念

$watch 是一个实例方法,它用于监听 Vue 实例属性的变化,当一个被监听的对象发生变化时,$watch 会执行响应的处理函数。

用法

Vue 实例可以使用 $watch 方法观察一个表达式的变化,表达式可以是一个函数或者是一个字符串。在观察期间,每当表达式的值发生改变时,$watch 将调用绑定的回调函数。

vm.$watch(expOrFn, callback, [options]);

以上代码中,expOrFn 表示被监听的属性或者函数,callback 表示属性变化时执行的回调函数,options 表示一些选项。

示例说明

下面我们来看一个问题,输入框中实时展示输入文字的长度。

<template>
  <div>
    <h2>输入框</h2>
    <p>已输入{{inputLength}}个字符</p>
    <input v-model="inputText" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputText: '',
      inputLength: 0,
    };
  },
  watch: {
    // 监听 inputText 的长度变化,更新 inputLength
    inputText: function(val) {
      this.inputLength = val.length;
    },
  },
};
</script>

在上面的代码中,我们定义了一个 inputText 属性表示输入框中的文本,inputLength 表示输入文本的长度,我们定义了一个 $watch 监听 inputText 的变化,每当 inputText 发生变化时,$watch 会调用定义的处理函数,将 inputText 的长度赋值给 inputLength,从而展示输入文本的长度。最后在模板中展示了输入文本的长度和实时更新的输入框。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue.js每天必学之计算属性computed与$watch - Python技术站

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

相关文章

  • webstorm激活码注册码最新2021(亲测,有效期至2089)附详细安装教程

    WebStorm激活码注册码最新2021攻略 简介 WebStorm是一款由JetBrains公司推出的基于IntelliJ平台的JavaScript IDE,它支持流行的Web开发工具,并且在代码开发效率、代码智能提示、代码调试等方面具有强大的功能。但是该软件需要购买才能正式使用,本文将介绍WebStorm激活码注册码最新2021攻略,以便大家可以更方便快…

    Vue 2023年5月28日
    00
  • Vue常用的修饰符及应用场景解读

    下面是“Vue常用的修饰符及应用场景解读”的完整攻略。 修饰符简介 Vue.js通过修饰符的方式,为指令提供了多种功能扩展。接下来介绍Vue常用的修饰符及应用场景。 .stop 修饰符.stop可以阻止事件冒泡,即在事件被触发后该元素的父元素不会再次触发该事件。 例如,以下代码段中,div的点击事件不会触发li的点击事件: <div @click=&q…

    Vue 2023年5月28日
    00
  • vue.js基于v-for实现批量渲染 Json数组对象列表数据示例

    下面是针对题目的详细讲解: 什么是vue.js Vue.js是一个构建用户界面的渐进式框架,它使得构建大型的单页面应用程序变得更加容易。 在Vue.js中,我们可以使用它的指令和模板语法轻松地渲染数据,从而实现与数据绑定的动态效果。 什么是v-for指令 Vue.js提供了v-for指令,它可以用于渲染列表或者数组数据。我们可以将其应用到一个HTML元素上,…

    Vue 2023年5月27日
    00
  • 组件库中使用 vue-i18n 国际化的案例详解

    使用Vue-i18n实现国际化的过程大体可以分为以下几个步骤: 安装并配置Vue-i18n 首先需要安装Vue-i18n,可使用npm命令进行安装: npm install vue-i18n –save 然后在项目中创建一个i18n.js文件,用于Vue-i18n的配置: import Vue from ‘vue’ import VueI18n from …

    Vue 2023年5月28日
    00
  • Vue项目总结之webpack常规打包优化方案

    那我们就来详细讲解一下“Vue项目总结之webpack常规打包优化方案”的完整攻略,包括以下内容: 一、Webpack基础知识 Webpack 是一个现代 JavaScript 应用程序的静态模块打包器。它会递归地构建一个依赖关系图,在这个过程中将每个模块视为一个节点,并将模块之间的依赖关系转换为图中的边。 我相信作为一个Vue开发者,你一定已经熟练掌握了W…

    Vue 2023年5月28日
    00
  • Vue项目的网络请求代理到封装步骤详解

    下面我将为您讲解“Vue项目的网络请求代理到封装步骤详解”的完整攻略。 一、配置跨域请求代理 在 Vue 项目中,我们要请求后端资源,遇到运行时跨域问题,通常有以下几种解决方案: 1. 使用 JSONP JSONP 通过 script 标签的 src 属性请求服务器获取数据,由于 script 标签的 src 属性不受同源策略限制,所以可以跨域请求。但是 J…

    Vue 2023年5月27日
    00
  • 关于axios配置多个请求地址(打包后可通过配置文件修改)

    对于axios配置多个请求地址,并且需要通过配置文件进行修改,可以通过以下步骤来实现: 安装axios库 首先,需要安装axios库,在命令行中输入以下命令: npm install axios 创建config文件夹及相关配置文件 在项目根目录下创建config文件夹,并在其中创建不同环境的配置文件(如dev.js、prod.js)。以dev.js为例,假…

    Vue 2023年5月28日
    00
  • vue如何添加数组页面及时显示

    当我们在 Vue 中使用数组时,我们可能需要通过添加或删除元素来更新页面。Vue 提供了一些内置的方法,来处理这些问题。下面就是一些步骤,可以让你在 Vue 中应用这些方法,以及让你了解 Vue 如何添加数组页面及时显示。 步骤一:定义数组 第一步是定义一个数组,你可以在 data 函数中定义数组,也可以将其定义为组件实例的属性。例如,下面是将数组定义为组件…

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