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自定义指令中无法获取this的问题及解决

    Vue自定义指令是Vue提供的一种扩展功能,可以在操作DOM的过程中实现很多自定义的业务逻辑。但是在Vue自定义指令中,经常会遇到无法获取this的问题。接下来,我将详细讲解这个问题的原因及解决方案,并提供两个示例。 问题原因 在Vue自定义指令中,this指向的是指令对象(Directive Object),而不是Vue实例(Vue Instance)。这…

    Vue 2023年5月28日
    00
  • vue mounted组件的使用

    下面是关于“vue mounted组件的使用”的完整攻略。 什么是mounted? 在Vue组件的生命周期中,mounted是一个非常重要的生命周期钩子函数。当组件被挂载到DOM中后,mounted函数会被调用,表示组件已经完全被加载到页面上,并且模板中的所有DOM元素已经生成。 使用方法 使用mounted非常简单,只需要在Vue组件的选项中添加一个mou…

    Vue 2023年5月27日
    00
  • Vue超详细讲解重试机制示例

    Vue超详细讲解重试机制示例 介绍 在实际开发中,我们经常遇到需要重试某个请求的情况,例如网络不稳定或请求失败等情况。Vue提供了一个非常方便易用的重试机制,以解决这个问题。 在本篇文章中,我们将会探讨如何使用Vue的重试机制,并提供两个示例帮助理解。 Vue的重试机制 Vue的重试机制是通过vue-resource库中的retry方法实现的。retry方法…

    Vue 2023年5月28日
    00
  • JS 图片压缩原理与实现方法详解

    JS 图片压缩原理与实现方法详解 原理介绍 图片压缩是指在保证图片质量的前提下,通过降低图片的分辨率、压缩比率等方式来减小图片的体积,从而达到优化页面加载速度的目的。在网页中,对于图片的大小不同,会直接影响页面的加载速度,特别是对于移动端的用户体验更加重要。 在实现 JavaScript 图片压缩的时候,常见的有两种方式: HTML5 的 Canvas + …

    Vue 2023年5月28日
    00
  • vue.js父子组件传参的原理与实现方法 原创

    下面是关于“vue.js父子组件传参的原理与实现方法”的详细攻略: 一、原理 在Vue.js中,父子组件之间的传参可以使用props进行实现。子组件可以通过props接收父组件传递的数据,而父组件则可以动态地改变这些数据,并且这些数据的变化会自动反应到子组件中。 具体而言,实现父子组件间传参的原理是: 父组件向子组件传递数据,需要定义props属性并在子组件…

    Vue 2023年5月27日
    00
  • vue如何使用moment处理时间戳转换成日期或时间格式

    下面是关于使用moment处理时间戳转换成日期或时间格式的完整攻略。 什么是moment.js? moment.js 是一个javascript 日期库,可用于解析、验证、操作和格式化日期。它支持日期和时间的计算、时间戳、日期字符串解析和格式化,以及各种本地化和时区设置等功能。 在Vue中使用moment.js 使用moment.js需要先将其引入到Vue项…

    Vue 2023年5月29日
    00
  • vue组件实现文字居中对齐的方法

    为了在Vue中实现文字居中对齐,我们可以使用CSS来为Vue组件设置样式。在Vue中设置样式的方法可以通过<style>标签来实现。 以下是两种示例说明: 示例一:使用flex 一种常见的设置文字居中对齐的方法是使用flexbox布局。在Vue组件中,我们可以为其容器添加.center类,通过CSS样式中的display: flex和align-…

    Vue 2023年5月28日
    00
  • 使用Vue调取接口,并渲染数据的示例代码

    下面是使用Vue调取接口并渲染数据的完整攻略。 一、准备工作 在开始之前,需要确保您已经装好了Node.js和Vue-cli。如果还没有安装,可以前往官网进行下载和安装。 二、创建Vue项目 在命令行中输入以下命令创建Vue项目: vue create my-project 这里创建的项目名为my-project。在创建项目的过程中,可以选择使用defaul…

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