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日

相关文章

  • 详解在Vue中使用TypeScript的一些思考(实践)

    下面是详细讲解: 标题 “详解在Vue中使用TypeScript的一些思考(实践)” 思路 本文将介绍在Vue.js中使用TypeScript时,如何解决一些常见问题的思路和实践方法。 正文 为什么使用TypeScript? TypeScript是JavaScript的超集,为JavaScript的弱类型特性提供了一定的类型检查和自动补全功能。在大型项目中使…

    Vue 2023年5月28日
    00
  • vue实现添加与删除图书功能

    作为网站作者,我很愿意为您详细讲解“vue实现添加与删除图书功能”的完整攻略。 1.添加图书功能 首先,在vue中实现添加图书功能,需要先创建组件。接下来,我们先来看一个添加图书的示例: 1.1创建组件 我们先在src目录下创建一个名为“AddBook.vue”的组件。在这个组件中,我们需要定义一个表单,以便用户可以输入书籍信息。代码如下: <temp…

    Vue 2023年5月29日
    00
  • 详解使用webpack打包编写一个vue-toast插件

    一、简介 本文主要讲解如何使用 webpack 打包编写一个 Vue.js 的 toast 插件。我们将通过以下步骤创建一个简单的 Vue.js toast 插件: 创建项目并安装必要的依赖 编写插件代码 配置 webpack 打包 将插件添加到 Vue.js 项目中进行使用 二、项目创建和依赖安装 我们首先使用 npm 初始化一个新项目: npm init…

    Vue 2023年5月28日
    00
  • 解决vue3项目打包发布到服务器后访问页面显示空白问题

    为解决vue3项目打包发布到服务器后访问页面显示空白问题,可以采取以下步骤进行操作: 确认打包文件是否存在问题 在发布vue3项目之前,需要先执行打包操作生成相应文件,打包命令如下: npm run build 此时会在项目根目录下生成”dist”文件夹,用于存放打包后的文件。为确认打包文件是否存在问题,可以初步使用本地服务器进行验证,终端操作命令如下: n…

    Vue 2023年5月28日
    00
  • vue关于接口请求数据过大导致浏览器崩溃的问题

    问题描述 在使用Vue进行接口请求数据时,如果数据过大,会导致浏览器卡顿甚至崩溃的问题。这是因为一次性加载过多的数据会导致浏览器内存占用过高,而浏览器的内存有限,无法承受过多的数据。 解决方案 为了解决这个问题,一种常用的方式是分页加载数据,即每次只加载部分数据,而不是一次性加载全部数据。例如,我们可以设置每页只加载10条数据,然后通过分页按钮或者滚动加载的…

    Vue 2023年5月28日
    00
  • webpack+vue2构建vue项目骨架的方法

    以webpack为工具、vue2为框架,构建vue项目骨架的方法如下: 一、搭建基本环境 1.1 初始化项目 首先,进入控制台,输入以下命令初始化项目: npm init 在初始化的过程中,我们需要输入基本项目信息,如项目名称、版本等。初始化完成后,会生成一个 package.json。 1.2 安装webpack 在控制台输入以下命令安装webpack: …

    Vue 2023年5月28日
    00
  • 在vue中实现简单页面逆传值的方法

    下面是在Vue中实现简单页面逆传值的方法的攻略。首先,我们需要明确以下两个概念: 父组件:组件树中调用子组件的那个组件。 子组件:组件树中被调用的那个组件。 实现逆传值的基本思路是,子组件将要传递的值通过事件的形式传递给父组件,从而实现逆传。具体实现步骤如下: 1. 通过emit事件传递值 在子组件中需要创建一个按钮,通过该按钮触发事件。这里我们假设子组件中…

    Vue 2023年5月28日
    00
  • vue源码中的检测方法的实现

    Vue源码中的检测方法的实现使用的是JavaScript提供的Object.defineProperty()方法,它可以拦截对对象属性的访问和修改。Vue将此方法用于Vue实例的data对象和组件实例的props对象上,以便在属性值变化时可以感知到,并及时更新视图。 具体实现步骤如下: 实现一个观察者,用来监听对象的变化,当对象的某个属性发生变化时,观察者会…

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