Vue之计算属性
2023-06-13 09:11:19 时间
--', newValue); const names = newValue.split(' '); this.firstName = names[0]; this.lastName = names[1]; }, get: function () { return this.firstName + ' ' + this.lastName } },
// fullName: function () {
// return this.firstName + ' ' + this.lastName
// }
}
})
```
三、计算属性和methods对比
<div id="app">
<!-- 插值操作拼接字符串的方法尽量不用,因为语法过于复杂 -->
<h2>{{firstName}} {{lastName}}</h2>
<!-- 函数拼接字符串 -->
<h2>{{getFullName()}}</h2>
<!-- 计算属性拼接字符串 -->
<h2>{{fullName}}</h2>
</div>
<script src="./js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
firstName : 'Taylor',
lastName : 'Swift'
},
methods: {
getFullName : function() {
return this.firstName + ' ' + this.lastName;
}
},
computed: {
fullName : function () {
return this.firstName + ' ' + this.lastName;
}
}
})
</script>
3种方法都能实现字符串的拼接:
- 第1种插值操作的方法最好不用,因为语法过于繁琐和复杂的代码不要放在html里处理
- 函数方法和计算属性看上去没有什么不同,但是为什么提倡使用计算属性呢?
Vue内部对计算属性有 缓存机制,只要监测到计算属性中的值没有发生变化,即使再次调用计算属性,也是将上次缓存的结果传递出去,而methods无论其中的值有没有发生变化,只要调用一次它就执行一次。 所以,在需要转换数据的情况下,计算属性的性能比methods高。
验证:
methods:
<div id="app">
<!-- 插值操作拼接字符串的方法尽量不用,因为语法过于复杂 -->
<!-- <h2>{{firstName}} {{lastName}}</h2> -->
<!-- 函数拼接字符串 -->
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<!-- 计算属性拼接字符串 -->
<!-- <h2>{{fullName}}</h2> -->
</div>
methods: {
getFullName : function() {
console.log('getFullName()被调用了');
return this.firstName + ' ' + this.lastName;
}
}
运行查看控制台:
methods执行了4次,调用了4次!
计算属性:
<div id="app">
<!-- 插值操作拼接字符串的方法尽量不用,因为语法过于复杂 -->
<!-- <h2>{{firstName}} {{lastName}}</h2> -->
<!-- 函数拼接字符串 -->
<!-- <h2>{{getFullName()}}</h2>
<!-- 计算属性拼接字符串 -->
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
</div>
computed: {
fullName : function () {
console.log('fullName被调用了');
return this.firstName + ' ' + this.lastName;
}
}
运行查看控制台:
fullName中的数据没有发生改变,由于缓存机制,即使执行了4次,也只调用了1次。
改变this.firstName的值 this.firstName一旦改变(数据发生了改变),计算属性就马上被调用
相关完整代码展示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<!--1.直接拼接: 语法过于繁琐-->
<h2>{{firstName}} {{lastName}}</h2>
<!--2.通过定义methods-->
<!--<h2>{{getFullName()}}</h2>-->
<!--<h2>{{getFullName()}}</h2>-->
<!--<h2>{{getFullName()}}</h2>-->
<!--<h2>{{getFullName()}}</h2>-->
<!--3.通过computed-->
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
// angular -> google
// TypeScript(microsoft) -> ts(类型检测)
// flow(facebook) ->
const app = new Vue({
el: '#app',
data: {
firstName: 'Kobe',
lastName: 'Bryant'
},
methods: {
getFullName: function () {
console.log('getFullName');
return this.firstName + ' ' + this.lastName
}
},
computed: {
fullName: function () {
console.log('fullName');
return this.firstName + ' ' + this.lastName
}
}
})
</script>
</body>
</html>
相关文章
- 计算属性是如何被Vue实现的
- Vue之动态绑定属性
- Vue数据可视化组件:data-view
- 每日一学Vue脚手架中基础的ref属性与原生id区别
- vue跨域解决方案 简书_springboot允许跨域
- antd table编辑_vue修改组件样式
- vue h5 highcharts可滑动折线面积图
- Vue学习笔记之vue.js 两个等号 == 和三个等号===的区别 数字0和空字符串
- VUE组件封装_vue组件内部双向绑定
- 一文快速上手Vue之计算属性和侦听器,过滤器
- Vue style里面使用@import引入外部css, 作用域是全局的解决方案
- 常考vue面试题(附答案)
- Vue中使用XML和JSON格式互转插件
- Vue组件插槽的使用
- vue源码分析-从new Vue开始_2023-02-24
- 6. 「vue@2.6.11 源码分析」组件渲染之虚拟DOM上界面
- Vue常见面试题
- IDEA安装Vue插件后为什么创建.vue文件不显示vue图标
- Vue使用printjs组件打印页面
- vue.js 路由参数传给组件详解编程语言
- Vue 实现前后端分离,安全连接 MSSQL 数据库(vue 连接mssql)
- Vue接入Redis拓展应用的可能性(vue调redis)
- Vue如何连接Redis数据库(vue怎么连接Redis)
- 优化网站性能,Vue搭配Redis缓存更加有效(vue使用redis缓存)
- Vue中触发Redis订阅通知(vue中订阅redis)