组件的基本知识

组件


概念

就是将要复用的标签,抽离放在一个独立的vue文件中,以供主vue文件使用

组成

三部分构成
template:HTML 结构
script: JS 逻辑
style: CSS 样式 (可⽀持less/scss,需要装包)

组件中也可以支持less/scss
style标签, lang=“less/scss” 开启 less/scss 功能
装包: npm i less less-loader -D 或者 npm i sass -D


步骤

步骤:抽离 -> 封装( JS+HTML+CSS ) -> 导⼊ -> 使⽤
简而言之:新建一个需要在主vue文件复用的vue组件,然后再主函数中进行导入使用

示例:在

src/components/MyPanel.vue

下创建一个复用的组件,然后需要在主vue文件应用那么我在主vue文件的就应该这样写

//导入方式一般用大驼峰,在后续使用的时候用烤串法也不出现错误,但是如果用烤串法只能用烤串法写出
<script setup>
import MyPanel from './components/MyPanel.vue'
<script>

使用分为烤串法和大驼峰法

<!-- ⼤驼峰标 双标签 -->
 <MyPanel></MyPanel>
 <!-- ⼤驼峰 ⾃闭合的单标签 -->
 <MyPanel />
 <!-- 烤串法 双标签 -->
 <my-panel></my-panel>
 <!-- 烤串法 ⾃闭合的单标签 -->
 <my-panel />

好处

化⼤为⼩、化繁为简 , 利于代码复⽤和维护


全局注册

可以在任何组件中使用,只要须在main.js导入,其他文件中可以直接使用


import BitButton from './components/BitButton.vue'
app.component('BitButton', BitButton)

生命周期

① 创建 ② 挂载 ③ 更新 ④ 卸载
创建阶段:创建响应式数据
挂载阶段:渲染模板
更新阶段:修改数据,更新视图
卸载阶段:卸载组件
在这里插入图片描述选项式API下, 如果⼀进⼊组件就发请求,在created进⾏?
选项式API下, 最早可以操作原⽣DOM, 在mounted进⾏?
选项式API下, 组件销毁, 要做优化⼯作, 在unmounted进⾏?

创建阶段挂载阶段更新阶段销毁阶段
Vue2beforeCreate/createdbeforeMount/mountedbeforeUpdate/updatedbeforeUnmount/unmounted
Vue3setup(⽹络请求)onBeforeMount/onMounted(操作DOM)onBeforeUpdate/onUpdatedonBeforeUnmount/onUnmounted(清理⼯作)
<script setup>
import { onMounted, onUnmounted } from 'vue'
// 开启定时器
const timer = setInterval(() => {
console.log('Hello World')
}, 1000)
// 组件挂载后
onMounted(() => {
// console.log(document.querySelector('p'))
// 将 p 标签的字体颜⾊设置为 green
document.querySelector('p').style.color = 'green'
})
// 组件卸载后
onUnmounted(() => {
// 关闭定时器
clearInterval(timer)
})
</script>

scoped

由于vue会进行打包操作,然后在前端渲染,会出现将”局部样式“变为“全局样式”,所以这时候就需要用到scoped,直接在

原理

程序员书写的选择器与属性选择器[data-v-xxxx]形成交集选择器,
因为属性选择器[data-v-xxxx]的唯⼀性, 保证了该样式只能对当前组件内的元素⽣效

父子通信

步骤

⼦组件通过 defineProps 接收数据(⼦接)
⽗组件通过 ⾃定义属性 传递数据 (⽗传)
在这里插入图片描述

子传父

⽗组件内,⼦组件上,绑定⾃定义事件,@⾃定义事件=“⽗修改数据的函数” (⽗绑定)
⼦组件恰当时机, 触发⽗组件的⾃定义事件 , emit(‘⾃定义事件’, 携带的参数…), 从⽽导致⽗组件
修改函数的时候(⼦触发)
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼裤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值