Vue组件的计算属性和普通属性的区别说明

Vue组件中常用的属性有两类,一类是普通属性,另一类是计算属性。两者有什么区别呢?在这里详细讲解一下。

普通属性

普通属性是指直接定义在 Vue 组件实例中的属性,它的值可以是静态的也可以是动态的。普通属性的值是可以直接访问的,一旦指定了初始值,它的值不会再发生变化,直到组件实例被销毁。

以下是一个示例代码:

<template>
  <h1>{{ message }}</h1>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, world!'
    }
  }
}
</script>

在这个示例中,message 是一个普通属性,并且它的值被定义为 "Hello, world!"。在模板中使用 {{ message }} 的方式来显示这个属性的值。

计算属性

计算属性是 Vue 组件中的一种特殊属性,它的值是动态计算得出的,并且可以被缓存和监视。计算属性的值依赖于其它属性中的值,只有当依赖属性发生变化时,计算属性才会被重新计算,并且在计算过程中会执行缓存优化。

下面是一个计算属性示例:

<template>
  <h1>{{ reversedMessage }}</h1>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, world!'
    }
  },
  computed: {
    reversedMessage() {
      return this.message.split('').reverse().join('')
    }
  }
}
</script>

在这个示例中,我们定义了一个名为 reversedMessage 的计算属性,它的值是 message 值的反转。计算属性的特点是:只要 message 发生变化,reversedMessage 的值就会重新计算,而不用对整个字符串进行反转操作。

区别说明

普通属性和计算属性的区别在于,普通属性直接访问,而计算属性需要进行动态计算。在实际使用中,计算属性常常用来处理一些复杂的逻辑操作,并将其结果缓存起来,以提高性能。而普通属性一般情况下用来存储静态的数据、标记、状态等值。

下面我们通过一个小例子演示一下它们的用途。

<template>
  <div>
    <p>昵称:{{ name }}</p>
    <p>性别:{{ gender }}</p>
    <p>年龄:{{ age }}</p>
    <p>毕业院校:{{ university }}</p>
    <p>职业:{{ profession }}</p>
    <p>用户信息:
      <ul>
        <li>昵称:{{ name }}</li>
        <li>性别:{{ gender }}</li>
        <li>年龄:{{ age }}</li>
        <li>毕业院校:{{ university }}</li>
        <li>职业:{{ profession }}</li>
      </ul>
    </p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: '小李',
      gender: '男',
      age: '26',
      university: '华南理工大学',
      profession: '前端工程师'
    }
  },
  computed: {
    userInfo() {
      return `${this.name},${this.gender},${this.age}岁,毕业于${this.university},职业是${this.profession}`
    }
  }
}
</script>

在这个示例中,我们给每一个属性都做了展示,除此之外还在整个组件中不同的地方展示了。当我们对用户信息进行展示的时候,每次需要手动写一遍,而用计算属性来组合上面那些属性的值之后可以直接使用 {{ userInfo }} 的方式展示,而不用再写一遍。这就是计算属性的实践价值所在。

另外一个示例,假如我们需要实现一个数字输入框,要求当输入的数字大于10的时候,输入框中的数字显示为“over”,否则仍显示当前输入的数字。

<template>
  <input type="number" :value="number" @input="onChange">
  <p>输入的数字是:{{ message }}</p>
</template>

<script>
export default {
  data() {
    return {
      number: 0
    }
  },
  computed: {
    message() {
      if (this.number > 10) {
        return 'over';
      } else {
        return this.number;
      }
    }
  },
  methods: {
    onChange(e) {
      this.number = e.target.value;
    }
  }
}
</script>

在这个示例中,我们使用了普通属性number来存储输入框中的数值,使用 computed 定义了一个名为 message 的计算属性,根据 number 的值来返回不同的结果。当键入一个数字时,我们通过 @input 监听数字输入事件,把输入框中的值更新到 number 属性上。如果我们使用普通属性去计算 message,则需要使用一个更复杂的逻辑来计算,“over”和数字对应的之间的转换。而使用计算属性,我们可以在方法中直接写一个判断逻辑,然后将它的返回值缓存起来。 这就是计算属性的便利之处。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue组件的计算属性和普通属性的区别说明 - Python技术站

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

相关文章

  • vue项目总结之文件夹结构配置详解

    当我们开发 Vue 项目时,良好的文件夹结构对于提高代码的可读性和可维护性至关重要。下面我将详细讲解“vue项目总结之文件夹结构配置详解”的完整攻略,帮助大家合理配置 Vue 项目的文件夹结构。 1. 将所有组件放在 components 目录下 在开发 Vue 项目时,通常会有很多的组件。为了使项目结构更为清晰,建议将所有组件放在 components 目…

    Vue 2023年5月28日
    00
  • Element-ui DatePicker显示周数的方法示例

    请注意,下面的回答将分为以下几个部分: 需求分析 DatePicker组件详解 展示周数的原理 实现步骤 示例说明 1. 需求分析 现在有这样的需求:希望在Element-ui的DatePicker组件中,能够展示出日期对应的周数。 2. DatePicker组件详解 在Element-ui中,DatePicker是日期选择器,可以根据用户的选择返回一个Da…

    Vue 2023年5月29日
    00
  • 从零开始在NPM上发布一个Vue组件的方法步骤

    下面是从零开始在NPM上发布一个Vue组件的方法步骤的完整攻略,包含以下几个步骤: 一、编写Vue组件 首先,需要编写一个可复用的Vue组件。在此我们以一个简单的按钮组件为例,代码如下: <template> <button :class="btnClass" @click="$emit(‘click’)&qu…

    Vue 2023年5月28日
    00
  • vue如何循环给对象赋值

    想要循环给对象赋值,可以使用Vue中的v-for指令来实现。v-for指令可以遍历一个数组或者一个对象中的所有元素,常用语渲染列表,也可以用于动态生成表单。 对于对象,v-for指令可以通过它的第二个参数,键名(key),来获取到对象的键名和键值。通过在模板中使用{ key, value } in object 表达式可以遍历对象。具体过程如下: 1.创建一…

    Vue 2023年5月28日
    00
  • vue-week-picker实现支持按周切换的日历

    接下来我会详细讲解如何使用 vue-week-picker 实现支持按周切换的日历的完整攻略。 1. 简介 vue-week-picker 是一个基于 Vue.js 开发的支持按周切换的日历组件。其核心功能是支持用户在周与周之间进行切换,并显示所选周的日期范围。 2. 安装 首先需要在 Vue.js 项目中安装 vue-week-picker 组件,可以通过…

    Vue 2023年5月29日
    00
  • vue中filters 传入两个参数 / 使用两个filters的实现方法

    在 Vue 中,可以使用 filter 过滤器来处理模板中的数据。filter 在显示数据之前对其进行处理,比如对字符串格式化、将时间格式化等等。 在 Vue 中,我们可以定义一个 filter 来处理一些数据,此时这个 filter 就是一个全局的 filter。可以被任何组件进行调用。 现在我们来详细讲解“vue中filters 传入两个参数 / 使用两…

    Vue 2023年5月27日
    00
  • vue3生命周期原理与生命周期函数简单应用实例分析 原创

    Vue3生命周期原理与生命周期函数简单应用实例分析 Vue3的生命周期和Vue2有些不同,但是原理和应用都是相似的。本文将从原理和应用两个方面分别讲解Vue3的生命周期。 原理 Vue3的生命周期可分为三个阶段:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeUnmoun…

    Vue 2023年5月28日
    00
  • Vue与Axios的传参方式实例详解

    标题:Vue与Axios的传参方式实例详解 介绍:Vue是一款流行的前端框架,而Axios则是一个非常强大的异步请求库。在Vue项目中,我们经常需要发送请求到服务器,因此Vue和Axios的结合使用非常常见。本文将详细讲解Vue和Axios的传参方式,包括两个示例说明,帮助大家更好地掌握相应的技能。 1. GET请求的传参方式 GET请求将参数放在URL的后…

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