Vue 计算属性和监视属性详解细节 class类绑定和style样式绑定 (四)

52 阅读5分钟

基础面试题

主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等

开源分享:docs.qq.com/doc/DSmRnRG…

在这里插入图片描述

注意:被Vue管理的函数,不要用箭头函数,会改变this。

总结:

在这里插入图片描述

2.3 getter的简写(前提不考虑修改,配置setter时)


在这里插入图片描述

3. Vue 监视属性

=========================================================================

3.1 注意事项


首先,介绍一个插件:

在这里插入图片描述

Vue开发者工具存在一个问题,就是如果没有牵动改变页面方面的内容,开发者工具中的root里面的data值一般不会变化,实际上是变化了。

源码:

Document

今天天气很{{info}}

<button @click="chengeWeather">切换天气

对于上面这种我们还可以更加简化一些,我们直接在@click中写判断式也是可以的,如下:

<button @click="isHot = !isHot">切换天气

也就是说div模板里面的东西是可以直接调用Vue实例对象中的内容。如果有两个以上的语句是可以通过" ;"来分割的。不过不推荐,还是在methods对象中定义比较好。

源码:

Document

今天天气很{{info}}

<button @click="isHot = !isHot">切换天气

如果我们像用Vue实例对象中没有的事件,例如alert,我们可以在data中导入:

在这里插入图片描述

当然,像这种在事件(@xxx = “yyy”)内写的方式不推荐,只是适合比较简单的内容,内容多了就非常冗余。

3.2 监视属性


3.2.1 监视属性watch 写法一

引入新的对象,watch就是用来监视的。

hander()函数: 当被监视的对象发生改变时,它就会被调用。

hander(newValue,oldValue)函数有两个参数,分别是修改前和修改后的值。

与hander对象函数对应的有immediate对象属性,作用就是初始化时,让handler调用一下。

源码:

Document

今天天气很{{info}}

<button @click="changeWeather">切换天气

3.2.2 监视属性watch 写法二

这里提醒一下,曾经我们对象和值的写法是这样子的,’ key ’ : ’ value ',后来呢只不过默认可以写成了key : ’ value ’ ,这里记一下要。

我们可以使用$watch()来在Vue实例对象外面,来定义监听。

源码:

Document

今天天气很{{info}}

<button @click="changeWeather">切换天气

对于这两种写法,第二种写法比较适合在不确定监测哪一个属性时适用,第一种写法比较适合已经确定好了监听那一个属性。

在这里插入图片描述

3.3 深度监视属性


因为在对象中键值的key,必须是字符串形式,所以可以写成’ key.xxx ‘:’ value '的样式。

专业术语上是:监视多级结构中某个属性的变化,用下面的样式。

源码:

Document

今天天气很{{info}}

<button @click="changeWeather">切换天气


a的值是:{{numbers.a}}

<button @click="numbers.a++">点我让a加1

当然,如果有上百个需要监视的对象属性,怎么办?

首先,就是我们不能直接监视numbers本省。因为我们的目标是监视numbers里面的内容,再次就是会发生下图的情况,就算numbers中的a、b发生变化,numbers中的handler也不会执行。在这里插入图片描述

如何解决,这里我们可以配置deep:true来解决。

源码:

Document

今天天气很{{info}}

<button @click="changeWeather">切换天气

a的值是:{{numbers.a}}

<button @click="numbers.a++">点我让a加1

b的值是:{{numbers.b}}

<button @click="numbers.b++">点我让b加1

总结:

在这里插入图片描述

3.5 监视的简写形式


在没有immediate,deep等其他的对象属性,只有handler时可以直接简写形式。

源码:

Document

今天天气很{{info}}

<button @click="changeWeather">切换天气

a的值是:{{numbers.a}}

<button @click="numbers.a++">点我让a加1

b的值是:{{numbers.b}}

<button @click="numbers.b++">点我让b加1

同样,$watch也是可以简写的,但不能有其他配置对象属性,只能有handler()函数。

在这里插入图片描述

4. watch和computed比较

=================================================================================

其实,watch和computed区别并不是很大,都能够实现,但computed因为必须有return返回值这一说,所以实现起来,会有一定阻碍。

在这里插入图片描述

在watch中定义,像setTimeout这样的全局函数,一定要写箭头函数,多注意this的情况。看下图:

在这里插入图片描述

在这里插入图片描述

监视属性,现在在官方文档里面叫做侦听属性。

在这里插入图片描述

5. Vue绑定 class类

=============================================================================

正常的样式正常写就可以,需要通过Vue来改变的样式可以用 :class=“xxx”,这样的方式来写。

5.1 字符串写法


**写法一:绑定class样式,字符串写法。

适用于:样式的类名不确定,需要动态指定.**

Document .demo1{ width: 400px; height: 300px; color: salmon; } .demo2{ border: 2px solid black; } .demo3{ border: 10px solid red; } .demo4{ border: 20px solid green; }
{{name}}

5.2 数组写法


**写法二:绑定class样式,数组写法。

适用于:要绑定的样式个数不确定,名字也不确定。**

Document .demo1{ width: 400px; height: 300px; color: salmon; } .demo2{ border: 2px solid black; } .demo3{ border: 10px solid red; } .demo4{ border: 20px solid green; } .backg{ color: grey; } .border{ border-radius: 50%; }
{{name}}

我们可以操作一些增删改查:

在这里插入图片描述

注意事项:

在这里插入图片描述

5.3 对象写法


绑定class样式,对象写法,适用于:要绑定的样式个数确定,名字也确定,但要动态决定用不用。

Document .demo1{ width: 400px; height: 300px; color: salmon; } .demo2{ border: 2px solid black; } .demo3{ border: 10px solid red; } .demo4{ border: 20px solid green; } .backg{ color: grey; } .border{ border-radius: 50%; }
{{name}}

6. Vue绑定 style样式

==============================================================================

style样式,也是包括对象写法和数组写法。

最后前端到底应该怎么学才好?

如果你打算靠自己摸索自学,那么你首先要了解学习前端的基本大纲,这是你将要学习的主要内容,理解以及掌握好这些内容,便可以找到一份初级的前端开发工作。你还需要有一套完整的前端学习教程,作为初学者最好的方式就是看视频教程学习,初学者容易理解接受。

不要选择买书学习,这样的方式没有几个人能学会,基本都是看不下去书,也看不懂书。如果喜欢看书的学弟,可以买一些经典的书籍作为辅助即可,主要还是以看教程为主。每天抽出固定几个小时学习,做好长期学习的准备。学习编程并不是每天光看视频,你学习编程最重要的目的是为了编写软件产品,提供给大众使用,所以用手写出代码实现功能才是我们要做的事情。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述