分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

实例分析Vue.js中 computed和method不同机制

发布时间:2023-09-06 01:10责任编辑:郭大石关键词:js

在vue.js中,有methods和computed两种方式来动态当作方法来用的

1.首先最明显的不同 就是调用的时候,methods要加上()

2.我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值

而使用 methods ,在重新渲染的时候,函数总会重新调用执行

为了方便理解,先上一段源码

<!DOCTYPE html><html> ???<head> ???????<meta charset="utf-8"> ???????<title>title</title> ???????<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script> ???</head> ???<body> ???????<div class="test"> ???<!--computed计算属性--> ???????????<p>{{now}}</p> ???????????<p>{{now}}</p> ???????????<p>{{now}}</p> ???????????<p>{{now}}</p> ???????????<hr /> ???????????<!--横线分割--></div> ???????<div class="test2"> ??<!--methods方法,注意new()加了括号--> ???????????<p>{{now()}}</p> ???????????<p>{{now()}}</p> ???????????<p>{{now()}}</p> ???????????<p>{{now()}}</p> ???????</div> ???</body> ???<script type="text/javascript"> ???????var myVue = new Vue({ ???????????el: ".test", ???????????computed: { ???????????????now: function() { ???????????????????var yanshi = 0; ???????????????????for(var o = 0; o < 2000; o++) { ????//延时 ???????????????????????for(var q = 0; q < 2000; q++) { ???????????????????????????yanshi++; ???????????????????????} ???????????????????} ???????????????????return Date.now() ???????????????} ???????????} ???????}); ???????var vue2 = new Vue({ ???????????el: ‘.test2‘, ???????????methods: { ???????????????now: function() { ???????????????????var yanshi = 0; ???????????????????for(var o = 0; o < 2000; o++) { ???????????????????????for(var q = 0; q < 2000; q++) { ???????????????????????????yanshi++; ???????????????????????} ???????????????????} ???????????????????return Date.now() ???????????????} ???????????} ???????}) ???</script></html>

运行结果如上,可以看出computed计算属性的话,每次进入页面将一直沿用第一次的信息,不会再触发now,这就是依赖缓存。(有延时的情况下 多次输出时间相同)

那什么是相关依赖发生改变时才会重新取值呢 比方说reversedMessage function()计算属性中调用了message变量

就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

methods是实时的,在重新渲染时,函数总会重新调用执行,不会缓存,(多次输出时间不同)

可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter :所以其实computed也是可以传参的。

实例分析Vue.js中 computed和method不同机制

原文地址:http://www.cnblogs.com/coderL/p/7506957.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved