热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谈谈vue.js中methodswatch和compute的区别和联系

methods,watch和computed都是以函数为基础的,但各自却都不同;1.watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某

methods,watch和computed都是以函数为基础的,但各自却都不同; 

1.watchcomputed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依赖数据)发生变化的时候,所有依赖这个数据的“相关”数据“自动”发生变化,也就是自动调用相关的函数去实现数据的变动。

2.对methods:methods里面是用来定义函数的,很显然,它需要手动调用才能执行。
  而不像watchcomputed那样,“自动执行”预先定义的函数

 【总结】:methods里面定义的函数,是需要主动调用的,而和watch和computed相关的函数,会自动调用,完成我们希望完成的作用

从性质上看:

1.methods里面定义的是函数,methods是方法,只要调用它,函数就会执行;

2.computed是计算属性,事实上和和data对象里的数据属性是同一类的(使用上),

<p>原始数据:{{msg}}p>  
<p>改变后的数据:{{changemsg}}p>  

var vm=new Vue({ 
el:"#example",   
data:{ 
 msg:"hello",  
},  
computed:{  //计算属性
    changemsg:function(){  
    return this.msg.split("").reverse().join("");  
    },  
} 

你在取用的时候,用this.changemsg去取用,就和取data一样(不要当成函数调用!!)

computed属性  VS watched 属性:

watch和computed各自处理的数据关系场景不同

1.watch擅长处理的场景:一个数据影响多个数据

技术图片

2.computed擅长处理的场景:一个数据受多个数据影响

技术图片

watched属性:代码更易于理解,它指定监测的值是谁,然后相应的改变其他的值。

var vm = new Vue({  
el: ‘#demo‘,  
data: { 
    firstName: ‘Foo‘, 
    lastName: ‘Bar‘,  
    fullName: ‘Foo Bar‘ 
   },  
watch: {  
    firstName: function (val) {  
        this.fullName = val + ‘ ‘ + this.lastName 
    },  
    lastName: function (val) {   
        this.fullName = this.firstName + ‘ ‘ + val 
    }  
   } 
}) 

computed属性:

var vm = new Vue({ 
       el: ‘#demo‘,  
     data: {  
           firstName: ‘Foo‘, 
           lastName: ‘Bar‘
   }, 
 computed: {  
       fullName: function () {   
           return this.firstName + ‘ ‘ + this.lastName 
       }  
   } 
})

需要注意的是,

methods调用的方法是没有缓存

computed调用的方法是有缓存,如果之前调用过,则直接返回结果而不是重复计算

DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<div id="app">
    <div>
        {{ message.split(‘‘).reverse().join(‘‘) }}
    div>
    <h2>计算属性h2>
    <div>
        <p>Original message: "{{ message }}"p>
        <p>Computed reversed message: "{{ reversedMessage }}"p>
        <button @click="change()">改变button>
    div>
    <h2>计算属性缓存 vs 方法h2>
    <p>Computed reversed message: "{{ reversedMessage }}"p>
    <p>Computed reversed message: "{{ reversedMessage }}"p>
    <p>Reversed message: "{{ reversedMessage2() }}"p>
    <p>Reversed message: "{{ reversedMessage2() }}"p>
 
div>
<script type="text/Javascript" src="js/vue2.6.js">script>
<script type="text/Javascript">
    let count=1;
    let vm=new Vue({
        el:#app,
        data:{
            message: Hello
        },
        computed:{
            // 计算属性的 getter
            reversedMessage(){
                count++;
                // `this` 指向 vm 实例
                return count+‘‘+this.message.split(‘‘).reverse().join(‘‘)
            }
        },
        methods:{
            change(){
                this.message="fdafdafsda";
            },
 
            reversedMessage2() {
                count++;
                return count+‘‘+this.message.split(‘‘).reverse().join(‘‘)
            }
        }
    })
 
 
script>
body>
html>

技术图片

原文出处:

https://my.oschina.net/u/3649083/blog/1560106

http://blog.java1234.com/blog/articles/533.html

谈谈vue.js中methods watch和compute的区别和联系


推荐阅读
  • 并发编程入门:初探多任务处理技术
    并发编程入门:探索多任务处理技术并发编程是指在单个处理器上高效地管理多个任务的执行过程。其核心在于通过合理分配和协调任务,提高系统的整体性能。主要应用场景包括:1) 将复杂任务分解为多个子任务,并分配给不同的线程,实现并行处理;2) 通过同步机制确保线程间协调一致,避免资源竞争和数据不一致问题。此外,理解并发编程还涉及锁机制、线程池和异步编程等关键技术。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Vue 实战基础教程第9讲:深入理解计算属性与侦听器的高效使用
    Vue 实战基础教程第9讲:深入理解计算属性与侦听器的高效使用 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 本指南详细介绍了如何利用华为云对象存储服务构建视频点播(VoD)平台。通过结合开源技术如Ceph、WordPress、PHP和Nginx,用户可以高效地实现数据存储、内容管理和网站搭建。主要内容涵盖华为云对象存储系统的配置步骤、性能优化及安全设置,为开发者提供全面的技术支持。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • 深入解析 Vue 中通过 $route.params 实现参数传递的方法与技巧
    本文深入探讨了在 Vue 框架中利用 `$route.params` 进行参数传递的方法和技巧。通过详细解析 `$route.params` 的工作机制及其与 `$route.query` 的区别,帮助开发者更好地理解和应用这一功能。文章不仅涵盖了基本的使用方法,还提供了实际案例和最佳实践,以便读者能够灵活运用这些技术,提升开发效率和代码质量。 ... [详细]
author-avatar
星控-集中营_220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有