使用vue框架已经一年多的时间了,虽然踩了不少的坑,但是 有些错误是经常性的。正好利用现在的空余时间,对自己所学的,所用的东西进行整理,总结。避免下次在采坑,也希望自己的总结,能够带给别人一些启发。
当其依赖的属性的值发生变化时,计算属性会重新计算,反之,则使用缓存中的属性值。
首先,通过vue官方文档的案例,来解释一下,为什么要使用computed。我们都知道,在模板内的表达式非常遍历的,但是,有时候,我们会在模板内的放入太多逻辑的东西。会让模板变重,且难于维护。
<div id="example">
{{ message.split('').reverse().join('') }}
</div>
在这模板中的代码中,其实,我们需要花费上一小段时间去理解,这块渲染的是什么---message的翻转字符串。然而,当初模板中使用表达式的初衷时为了简单运算的。所以,从这点出发,我们是不是就不建议在模板中使用过于复杂的表达式了。此时,计算属性就横空出世了。计算属性就是当依赖的属性的值发生变化的时候,才会触发他的更改,如果依赖的值,不发生变化的时候,使用的是缓存中的属性值。
<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
在vue中,computed的属性可以被视为是data一样,可以读取和设值。因此,在computed中可以分为getter(读取)和setter(设值),一般情况下,是没有setter的,computed只是预设了getter,也就是只能读取,不可以改变设值。所以,computed默认格式(是不表明getter函数的):
html:
<div>
message: {{message}}
</div>
<!-- 计算属性 -->
<div>
计算属性: {{updateMessage}}
</div>
computed: {
updateMessage(): {
console.log('计算属性', this.message)
return this.message
}
}
等价于
computed: {
updateMessage: {
get: function() {
console.log('计算属性', this.message)
return this.message
}
}
},
发现了一个小小的惊喜:当模板中不使用updateMessage,即使message发生改变之后,也不会走computed。神奇不神奇??哈哈哈
在这里,就需要我们注意一下,不是说我们更改了getter中使用的变量(即依赖的属性),就会触发computed的更新,他有一个前提是computed里的值必须要在模板中使用才可以。但是会触发生命周期的updated()
当赋值给计算属性的时候,将调用setter函数。多用于在模板组件中需要修改计算属性自身的值的时候。
computed: {
updateMessage: {
get: function() {
console.log('计算属性', this.message)
return this.message
},
set: function(newVal) {
this.message = newVal
console.log('newVal', newVal)
}
}
},
mounted () {
this.updateMessage = '222'
console.log('测试:', this)
},
只有当计算属性中的属性被直接赋值的时候,才会走setter函数,而且,setter函数和getter函数是相互独立的,不是说,走setter函数,就必须走getter函数。上面的案例,打印结果是
newVal: 222,
计算属性: 222
是因为,在setter中触发了message的更改,当message发生改变的时候,getter函数中就会改变。
computed: {
updateMessage: {
get: function() {
console.log('计算属性', this.message)
return this.message
},
set: function(newVal) {
console.log('newVal', newVal)
}
}
},
mounted () {
console.log('测试:', this)
},
这种情况下,打印结果是:
newVal 222
此时,就只是单单的走了setter的函数,而没有走getter函数。
这篇文章呢,主要是介绍一下关于computed的基本构成和使用,也算是,自己对computed的一个简单的总结把。不会让自己在做项目的过程中,遇见关于类似的问题,而无法解决。不知道如何使用。然后呢,等撸vue的源码的时候,在深入的写一篇关于computed的原理的文章。因为有些神奇的现象是必须要通过原理来解释的。
display:none;会让元素完全从渲染树中消失,渲染的时候不占据任何空间;visibility: hidden;不会让元素从渲染树消失,渲染师元素继续占据空间,只是内容不可见,display: none;是非继承属性,子孙节点消失由于元素从渲染树消失造成,通过修改子孙节点属性无法显示;
元素宽高width,min-width,max-width等元素宽度设置百分比,以包含块的宽度为标准进行计算;height,min-height,max-height等元素宽度设置百分比,以包含块的高度为标准进行计算;
readonly 只对 <input> 和 <textarea> 标签有效;disabled 对所有表单元素都有效, 包括:<input>, <textarea>, <button>, <label>, <option>, <select>等
事实上我挺长一段时间都没弄清楚overflow:scroll与overflow:auto的差别,今天测试了一下,总算是明白了。visible: 不剪切内容。hidden: 将超出对象尺寸的内容进行裁剪,将不出现滚动条。scroll: 将超出对象尺寸的内容进行裁剪,并以滚动条的方式显示超出的内容。
这篇文章主要介绍了Vue Prop属性功能与用法,结合实例形式较为详细的分析了vue.js中Prop属性的功能、原理、使用方法及相关操作注意事项,写的十分的全面细致,具有一定的参考价值
层叠顺序的大小比较;层叠顺序级别高的元素覆盖级别低的元素。首先要注意,z-index:auto 虽然可以看作z-index:0 ,但是这仅仅是在层叠顺序的比较上;从层叠上下文上讲,二者有本质差别:auto 不会创建层叠上下文,z-index:0 会创建层叠上下文。
所有的计算属性都以函数的形式写在Vue实例中的computed选项内,最终返回计算后的结果。在一个计算属性中可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果即可。
CSS分类目录 文本/字体/颜色 文本相关 字体相关 颜色相关 背景相关 大小/布局 大小属性 margin 外边距 padding 内边距 border 边框 position 定位 列表/表格 多列属性 可伸缩框属性 列表属性 Grid属性 Table属性 动画属性 Animation 动画属性 Transition 过渡属性
word-wrap正常来说,在一行文本中,如果出现这一行已经放不下的单词,浏览器会自动将该文字转入下一行。white-space规定段落中的文本不进行换行。
border 在一个声明中设置所有的边框属性。 border-bottom在一个声明中设置所有的下边框属性。border-bottom-color设置下边框的颜色。border-bottom-style设置下边框的样式。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!