计算属性是 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>
</head>
<body>
<div id="app">
<h3>方式一:</h3>
{{ msg.split('').reverse().join('') }}
<h3>方式二:</h3>
{{ reversemsg() }}
{{ reversemsg() }}
{{ reversemsg() }}
<h3>计算属性:</h3>
{{ myreversemsg }}
{{ myreversemsg }}
{{ myreversemsg }}
<hr>
<button @click="changemsg">点我修改 msg</button>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 需求:将 msg 进行翻转显示
// 方式一:直接在结构中写 js 代码
// 不建议:结构代码中尽量不要放逻辑代码
// 方式二:使用方法来解决
// 不建议:每次使用时都会调用一次方法
// 方式三:使用计算属性
// 建议使用的
new Vue({
el: '#app',
data: {
msg: 'message'
},
methods: {
reversemsg() {
console.log(1111)
return this.msg.split('').reverse().join('')
},
changemsg () {
this.msg = 'abcdefg'
}
},
computed: {
myreversemsg: function () {
console.log(2222)
return this.msg.split('').reverse().join('')
}
}
})
</script>
</html>