【Vue3】第三篇

Vue3学习第三篇

  • [01. 组件组成](#01. 组件组成)
  • [02. 组件嵌套关系](#02. 组件嵌套关系)
  • [03. 组件注册方式](#03. 组件注册方式)
  • [04. 组件传递数据Props](#04. 组件传递数据Props)
  • [05. 组件传递多种数据类型](#05. 组件传递多种数据类型)
  • [06. 组件传递Props校验](#06. 组件传递Props校验)
  • [07. 组件事件](#07. 组件事件)
  • [08. 组件事件配合v-model使用](#08. 组件事件配合v-model使用)
  • [09. 组件数据传递](#09. 组件数据传递)
  • [10. 透传Attributes](#10. 透传Attributes)

01. 组件组成

vue 当中,组件是最重要的知识 ,因为在vue当中是组件化开发,也就是说,所有的内容都是由组件所组成的。

比如,我们写一个项目,这个项目 有很多功能每个功能 都是由一个完整的组件去实现的,把这些功能或者说这些组件拼在一起就形成了一个完整的项目。

组件最大的优势就是可复用性

意思就是我们把一个功能抽离成一个组件之后,这个功能就可以被多次引用。

当使用构建步骤时,我们一般会将Vue组件定义在一个单独的.vue文件中,这被叫做单文件组件(简称SFC)

template标签 :承载所有的html标签
script标签 :承载所有的业务逻辑
style标签 :承载所有的样式

所以,一个vue的组件就承载了所有的我们页面所要呈现的内容,包含结构的html、逻辑的js、样式的css。

下面我们来看组件是如何使用的:

注意:scoped

如果不加它,则样式全局可用。

02. 组件嵌套关系

下面我们来实操完成页面:

(1)Header:

以此类推Main和Aside

(2)Main:

(3)Aside:


03. 组件注册方式

一个Vue组件使用前 需要先被"注册",这样Vue才能在渲染模板时找到其对应的实现。
组件注册有两种方式:全局注册局部注册

我们平常所使用的就是局部注册。(引入)

(1)全局注册

以Header为例:

main.js 中通过app.component 注入。括号内:

第一个,为它起的名 (日后我们要引用的名字)

第二个,它的名字

全局注册则不需要在App.vueimport(引入)以及不需要components(注入) ,只需要显示 即可。(引入和注入在main.js内)



(2)局部注册

04. 组件传递数据Props


(1)普通Props父传子

在parent组件中,在child 展示 的标签内传递给child数据

child用Props接收:

结果:

(2)动态传递数据

我们上面parent传递给child的数据是写死的,其实我们可以动态传递数据。

注意:

05. 组件传递多种数据类型



06. 组件传递Props校验

(1)校验

vue组件可以对传递过来的数据类型校验


也可以是数组包括很多类型 传递过来的数据类型满足其中一个 即可

(2)默认值

用default设置默认值0:

传递则显示20,不传则显示默认值0(传的话,有:age="age"

注意:

其实就是通过函数 来增加默认值 返回

(3)必选项

必须传递数据

不传递数据则报警告。

注意:

props是只读的,不允许修改 父元素传递过来的数据(但可以修改 自己data内的数据

07. 组件事件

先前我们已经讲过事件处理 (给页面中的元素添加事件 ,如按钮的点击事件)。

今天我们就来学习组件事件 (给组件本身添加事件 ,目的是用来做组件之间的数据传递的)

注意:在老版本中称为自定义事件

props只能父传子,而自定义事件则可以实现子传父


也可以写在页面上

child组件也可以如下:

08. 组件事件配合v-model使用

前面我们学过,v-model是表单中使用的一个指令,在input标签或者其他标签内用,在用户输入的同时来获取用户所输入的信息。

那么在组件中呢,则是:

组件A输入 数据,在组件B实时得到数据。

下面是两个组件,Main和Search。

我们希望在Search组件的表单内输入数据,Main组件中获取数据(一边展示搜索框的内容)

要怎么做到呢?答:结合自定义事件侦听器 两者来实现。

09. 组件数据传递

先前我们并没有传递函数,而函数 是可以互相携带参数 的,所以我们可以利用这个细节来实现子传父

实际上还是A给B传,只不过在传递的时候B给A回了个参数

(实际上还是调用A中的函数执行)


10. 透传Attributes

不常用。了解即可。

相当于h3 里面具attr-container样式

还有个知识点

inheritAttrs 设为false ,这样则其不生效

相关推荐
迷雾漫步者12 分钟前
Flutter组件————FloatingActionButton
前端·flutter·dart
向前看-39 分钟前
验证码机制
前端·后端
燃先生._.2 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)
前端·javascript·vue.js
高山我梦口香糖3 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
m0_748235243 小时前
前端实现获取后端返回的文件流并下载
前端·状态模式
m0_748240254 小时前
前端如何检测用户登录状态是否过期
前端
black^sugar4 小时前
纯前端实现更新检测
开发语言·前端·javascript
寻找沙漠的人4 小时前
前端知识补充—CSS
前端·css
GISer_Jing4 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试