var vm = new Vue({ el: '#app', data: { message: 'hello' }, template: ` <div> <p>我是原始值: "{{ message }}"</p> <p>我是计算属性的值: "{{ computedMessage}}"</p> // computed 在 DOM 里直接使用不需要调用 </div> `, computed: { // 计算属性的 getter computedMessage: function () { // `this` 指向 vm 实例 return this.message.split('').reverse().join('') } } })
结果:
我是原始值: "Hello"
我是计算属性的值: "olleH"
如果不使用计算属性,那么 message.split('').reverse().join('') 就会直接写到 template 里,那么在模版中放入太多声明式的逻辑会让模板本身过重,尤其当在页面中使用大量复杂的逻辑表达式处理数据时,会对页面的可维护性造成很大的影响
而且计算属性如果依赖不变的话,它就会变成缓存,computed 的值就不会重新计算
所以,如果数据要通过复杂逻辑来得出结果,那么就推荐使用计算属性
new Vue({ data: { n: 0, obj: { a: "a" } }, template: ` <div> <button @click="n += 1">n+1</button> <button @click="obj.a += 'hi'">obj.a + 'hi'</button> <button @click="obj = {a:'a'}">obj = 新对象</button> </div> `, watch: { n() { console.log("n 变了"); }, obj:{ handler: function (val, oldVal) { console.log("obj 变了") }, deep: true // 该属性设定在任何被侦听的对象的 property 改变时都要执行 handler 的回调,不论其被嵌套多深 }, "obj.a":{ handler: function (val, oldVal) { console.log("obj.a 变了") }, immediate: true // 该属性设定该回调将会在侦听开始之后被立即调用 } } }).$mount("#app");
不应该使用箭头函数来定义 watcher 函数,因为箭头函数没有 this,它的 this 会继承它的父级函数,但是它的父级函数是 window,导致箭头函数的 this 指向 window,而不是 Vue 实例
vm.$watch() 的用法和 watch 回调类似
vm.$watch("n", function(val, newVal){ console.log("n 变了"); },{deep: true, immediate: true})
以上就是Vue中computed和watch有哪些区别的详细内容,更多关于Vue中computed和watch的区别的资料请关注小牛知识库其它相关文章!
本文向大家介绍Vue和React有哪些区别,包括了Vue和React有哪些区别的使用技巧和注意事项,需要的朋友参考一下 一、监听数据变化的实现原理不同 Vue通过 getter/setter以及一些函数的劫持,能精确知道数据变化 ,不需要特别的优化就能达到很好的性能 React默认是通过 比较引用 的方式进行的,如果不优化( pureComponent/shouldComponentUpdate
比如,我切换图片时,触发以下method: 这里自动切换到当前图片对象 最后在watch时使用到了computed后的对象,但是computed是在watch之后执行的,activeImage数据就不对,有没有什么办法解决?
Jedis 和 Redisson 都是Java中对Redis操作的封装。Jedis 只是简单的封装了 Redis 的API库,可以看作是Redis客户端,它的方法和Redis 的命令很类似。Redisson 不仅封装了 redis ,还封装了对更多数据结构的支持,以及锁等功能,相比于Jedis 更加大。但Jedis相比于Redisson 更原生一些,更灵活。
本文向大家介绍jedis 和 Redisson 有哪些区别?相关面试题,主要包含被问及jedis 和 Redisson 有哪些区别?时的应答技巧和注意事项,需要的朋友参考一下 jedis:提供了比较全面的 Redis 命令的支持。 Redisson:实现了分布式和可扩展的 Java 数据结构,与 jedis 相比 Redisson 的功能相对简单,不支持排序、事务、管道、分区等 Redis 特性。
本文向大家介绍SpringCloud 和 Dubbo 有哪些区别?相关面试题,主要包含被问及SpringCloud 和 Dubbo 有哪些区别?时的应答技巧和注意事项,需要的朋友参考一下 首先,他们都是分布式管理框架。 dubbo 是二进制传输,占用带宽会少一点。SpringCloud是http 传输,带宽会多一点,同时使用http协议一般会使用JSON报文,消耗会更大。 dubbo 开发难度较大
1、两者最大的区别 针对简单逻辑,都有对应的代码生成工具,可以生成简单基本的dao层方法; 针对高级查询,mybatis要手动编写sql语句和resultMap,而hibernate有良好的映射机制; 2、开发难度对比 hibernate > mybatis 3、日志统计 hibernate有自己的日志统计功能,而mybatis需要借助log4j来记录日志。 4、数据库扩展比较 hibernat
本文向大家介绍MyBatis 和 hibernate 的区别有哪些?相关面试题,主要包含被问及MyBatis 和 hibernate 的区别有哪些?时的应答技巧和注意事项,需要的朋友参考一下 灵活性:MyBatis 更加灵活,自己可以写 SQL 语句,使用起来比较方便。 可移植性:MyBatis 有很多自己写的 SQL,因为每个数据库的 SQL 可以不相同,所以可移植性比较差。 学习和使用门槛:M
本文向大家介绍React.createClass和extends Component的区别有哪些?相关面试题,主要包含被问及React.createClass和extends Component的区别有哪些?时的应答技巧和注意事项,需要的朋友参考一下 1.语法 React.createClass和extends采用函数构造 extends Component采用类构造 2.propType 和 g