广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue计算属性computed方法内传参方式
  • 277
分享到

vue计算属性computed方法内传参方式

摘要

目录Vue计算属性computed方法内传参计算属性computed与method的区别什么是计算属性?computed实例computed与method的区别关于传参问题vue计算

vue计算属性computed方法内传参

遇到头疼的vue计算属性传参问题

经过各种资料查找,亲测有效

index.vue
<van-circle
      v-model="Ratedata[index].currentRate"
         color="#2462E8"
         fill="#fff"
         layer-color="#E6E6E6"
         :rate="Ratedata[index].rate"
         :text="text(index)"
         :speed="60"
         :clockwise="true"
         :stroke-width="40"
 />

computed中text方法传递index,利用了闭包传值

computed: {
          text() {
              return function (index) {
                  return this.Ratedata[index].currentRate.toFixed(0) + '%';
              }
          }
        },

计算属性computed与method的区别

目前工作中,很多公司都把vue作为自己的前端框架,vue的开发者和研究者也越来越多;不知道有多少人在研究使用vue的时候,对computed和methods到底有什么区别都不是特别明白。因为我们发现,想要实现一个需求,我们使用两种方式中的任何一个,基本上都可以实现,那么我们平时应该用什么更好呢?

什么是计算属性?

提到计算属性,就不得不先提一下Vue中的另一个内容,它就是插值表达式。话不多说,先上一个案例,来见识一下何为插值表达式:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta Http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="js/vue.js"></script>
</head>
<body>
  <div id="app">
    <p>{{msg}}</p>
  </div>
  <script>
    var vm=new Vue({
      el:"#app",
      data:{
        msg:"vue的绑定语法,学名叫插值语法",
      }
    })
  </script>
</body>
</html>

运行结果:

上面这个案例就是一个Vue插值表达式的实例,通过这个例子,我们不难看出,插值表达式的语法相当简洁,使用起来也很方便。但是也不免暴露出它的一些缺点,最典型的就是无法进行复杂逻辑运算。所以,Vue才会自带计算属性的功能。

话说到这里,大家应该也就了解了,计算属性的本质就是辅助插值表达式来进行复杂逻辑运算的

computed实例

下面,我们通过一段代码来具体看一下Vue中计算属性的实际应用:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="js/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <div>{{msg}}</div>
      <div>{{reverseString}}</div>
    </div>
    <script>
      var vm = new Vue({
        el: "#app",
        data: {
          msg: "大家好,我是儒雅的烤地瓜,请多多指教",
        },
        methods: {},
        computed: {
          // 也可以使用对象方法的简写:reverseString(){...}
          reverseString: function () {
            return this.msg.split("").reverse().join("");
          },
        },
      });
    </script>
  </body>
</html>

运行结果:

上面这个案例就是一个computed的实例演示,我们通过代码不难看出:第一个p标记中的插值表达式显示的是原文,而第二个p标记中,显示的则是经过一系列api处理之后的文本内容。

其中,所有的API操作都放在了computed中的reverseString方法中来实现,而最终插值表达式,只是将computed中处理完毕的属性绑定给自己即可。这也从另一个侧面证实了computed只负责进行复杂逻辑运算的特点

computed与method的区别

在Vue中,有computed和methods两个模块,且这两个模块都可以进行方法的编写。那么问题来了,二者之间到底有何区别?

首先,计算属性是基于它们的依赖进行缓存的,只有在依赖发生改变的时候,它们才会重新计算,否则,它们是不变的。换句话说,就是每次访问计算属性时,如果依赖没有发生改变,它们可以立即返回结果,而不需要进行复杂的逻辑运算。而methods中的方法,只要被触发,被调用的方法就会立即执行对应函数,重新进行渲染。

其次,计算属性是具有缓存性质的,而methods中的方法,则不具备缓存的能力,下面通过一个代码片段来进行演示:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="js/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <!-- 原始属性输出的结果 -->
      <p>{{msg}}</p>
      <!-- methodDome方法输出的结果 -->
      <p>{{methodDome()}}</p>
      <!-- 计算属性输出的结果 -->
      <p>{{computedDome}}</p>
    </div>
    <script>
      var vm = new Vue({
        el: "#app",
        data: {
          msg: "Hello Vue"
        },
        methods: {
          // 也可以使用对象方法的简写:methodDome(){...}
          methodDome:function(){
            return this.msg.split(' ').reverse().join("===");
          }
        },
        computed: {
          // 也可以使用对象方法的简写:computedDome(){...}
          computedDome:function(){
            return this.msg.split(' ').reverse().join("===");
          }
        },
      });
    </script>
  </body>
</html>

运行结果:

通过上面这个案例,我们可以看出,computed和methods在输出的结果上是一致的,只不过在计算结果这个过程中,有所不同。一个是利用依赖关系进行缓存,只要依赖不变,值就不变;一个是被调用,重新执行函数。 

再举一个类似例子,如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <div>{{reverseString}}</div>
      <div>{{reverseMessage()}}</div>
    </div>
    <script src="js/vue.js"></script>
    <script>
      
      var vm = new Vue({
        el: "#app",
        data: {
          msg: "Nihao",
          num: 100,
        },
        computed: {
          reverseString: function () {
            console.log("computed");
            // return this.msg.split('').reverse().join('');
            var total = 0;
            for (var i = 0; i <= this.num; i++) {
              total += i;
            }
            return total;
          },
        },
        methods: {
          reverseMessage: function () {
            console.log("methods");
            return this.msg.split("").reverse().join("");
          },
        },
      });
    </script>
  </body>
</html>

运行结果: 

关于传参问题

用过methods的同学一定知道,methods中定义的所有方法都是可以进行参数传递的,但是computed中的方法可以进行参数传递吗?

其实,我们如果仔细看一下Vue的官方文档,就会发现,官方文档说明中,并不支持的在computed中进行传参操作。那么问题来了,假如现在就想在computed中进行传参操作该怎么做呢?

其实也很简单,在javascript语言中,我们提到过闭包这种设计,它的主要作用,不就是用来访问其他函数内部的变量,然后返回操作结果。所以,我们可以利用闭包来实现。

:data="closure(item,itemName,blablaParams)"
 
computed: {
   closure(){
      return function(a,b,c){
        // do something
        return data
      }
    }
}

总结:通过上面概述我们不难发现,Vue的computed主要是用来进行组件复杂逻辑运算的,辅助插值表达式来简化结构性代码,让开发人员更专注与数据层的操作。

同时,对于一些运算复杂,且依赖变化较小的功能块,也可以从methods中移到computed中,来提高代码的运行速度,在方法传参方面,可以利用JavaScript的闭包设计来完成传参。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue计算属性computed方法内传参方式

本文链接: https://www.lsjlt.com/news/169828.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue计算属性computed方法内传参方式
    目录vue计算属性computed方法内传参计算属性computed与method的区别什么是计算属性?computed实例computed与method的区别关于传参问题vue计算...
    99+
    2022-11-13
    vue计算属性传参 vue computed方法内传参 vue computed传参
  • vue中的计算属性传参
    目录vue计算属性传参我们来看看下面的示例vue计算属性传参,根据值不同,渲染相应的内容业务描述vue计算属性传参 最近很多小伙伴问到,计算属性怎么做到像普通函数一样传参呢? 针对这...
    99+
    2022-11-13
  • Vue中computed计算属性和data数据获取方式
    目录computed计算属性和data数据获取解决方法一解决方法二computed计算属性取对象的值,第一次报错undefined报错和打印值解决方案computed计算属性和dat...
    99+
    2022-11-13
  • vue计算属性computed--getter和setter用法
    目录计算属性computed和方法methods的区别计算属性的完整写法vue3计算属性computed实现原理computed实现原理总结计算属性computed和方法method...
    99+
    2023-01-28
    vue计算属性computed vue计算属性getter vue计算属性setter
  • vue中动态参数与计算属性的使用方法
    一,动态参数 从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数: <a v-bind:[attributeName]=“url”&...
    99+
    2022-11-12
  • Vue3计算属性和异步计算属性方式
    目录一、简要介绍二、计算属性核心源码 三、异步计算属性核心源码一、简要介绍 不论是计算属性,还是异步计算属性,都是依托于Vue3整体的响应式原理实现的。其核心依旧是Reac...
    99+
    2022-11-13
  • vue怎么调用计算属性方法
    在Vue中,计算属性是一种特殊的属性,它可以根据已有属性的值计算出新的属性值。在开发中,我们通常会将一些需要计算的属性定义为计算属性,以便在模板中直接使用,避免了在JS代码中频繁地进行逻辑计算。但是,有时候我们在Vue组件中需要调用计算属性...
    99+
    2023-05-14
  • Vue计算属性与监视属性实现方法详解
    目录一、计算属性1、插值语法实现2、通过方法实现3、通过计算属性二、监视属性三、深度监视一、计算属性 在开发中,可以有这样的需求,在属性(date)中,有fistName和lastN...
    99+
    2022-11-13
  • vue计算属性想要传入参数如何解决
    目录vue计算属性想要传入参数怎么办先讲解决方案再讲一下我遇到的问题下面这样解决vue计算属性computed使用注意事项(有缓存)应该如何选择?总结vue计算属性想要传入参数怎么办...
    99+
    2023-01-28
    vue计算属性 vue传入参数 计算属性传入参数
  • Vue中computed(计算属性)和watch(监听属性)的用法及区别说明
    目录计算属性computed侦听属性watch计算属性computed 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数...
    99+
    2022-11-13
  • Vue中使用计算属性的方法是什么
    这篇文章主要介绍“Vue中使用计算属性的方法是什么”,在日常操作中,相信很多人在Vue中使用计算属性的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue中使用计算属性的方法是什么”的疑惑有所帮助!...
    99+
    2023-06-21
  • Vue中如何使用方法、计算属性或观察者模式
    这篇文章主要为大家展示了“Vue中如何使用方法、计算属性或观察者模式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中如何使用方法、计算属性或观察者模式”这...
    99+
    2022-10-19
  • vue中计算属性和方法的区别及说明
    目录vue计算属性和方法区别区别vue向计算属性传递参数vue计算属性和方法区别 当我们实现翻转字符串的业务逻辑时,使用插值表达式打码如下: <div id="app">...
    99+
    2022-11-13
  • 聊聊Vue中的计算属性、方法与侦听器
    也就是说,当计算属性依赖的数据发生改变时,它会重新计算;若没有变化时,则不计算,会一直使用上一次计算的结果(这样也就提高了一些性能)。在我们的代码中,当 firstName 或 lastName 改变时,fullName 会重新计算,不变时...
    99+
    2023-05-14
    前端 JavaScript Vue.js
  • vuex的几个属性及其使用传参方式
    目录vuex概念1.1、组件之间共享数据的方式1.2、Vuex是什么1.3、使用Vuex同意管理状态的好处vuex的基本使用vuex的核心概念StateMutation第一种方式第二...
    99+
    2023-01-28
    vuex几个属性使用传参 vuex使用传参 vuex的几个属性
  • Vue + Axios 请求接口方法与传参方式详解
    目录一、Get请求:二、Post请求:三、拓展补充使用Vue的脚手架搭建的前端项目,通常都使用Axios封装的接口请求,项目中引入的方式不做多介绍,本文主要介绍接口调用与不同形式的传...
    99+
    2022-11-12
  • Vue 计算属性之姓名案例的三种实现方法
    目录一、姓名案例-插值语法实现二、姓名案例-methods实现三、姓名案例-计算属性实现四、计算属性简写效果: 一、姓名案例-插值语法实现 <!DOCTYPE html>...
    99+
    2022-11-13
  • 怎么使用Vue计算属性中reduce方法实现遍历
    今天小编给大家分享一下怎么使用Vue计算属性中reduce方法实现遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。vue计...
    99+
    2023-07-05
  • Vue中的计算属性、方法与侦听器源码分析
    这篇“Vue中的计算属性、方法与侦听器源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的计算属性、方法与侦听器...
    99+
    2023-07-05
  • Vue+Axios请求接口方法与传参方式是什么
    这篇文章主要讲解了“Vue+Axios请求接口方法与传参方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue+Axios请求接口方法与传参方式是什么”吧!一、Get请求:Get请求...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作