【Vue3+Vite】Vue生命周期与组件 快速学习 第三期

文章目录

  • 一、Vue生命周期
    • 1.1 生命周期简介
    • 1.2 生命周期案例
  • 二、Vue组件
    • 2.1 组件基础
    • 2.2 组件化入门案例
    • 2.3 组件之间传递数据
      • 2.3.1父传子
      • 2.3.2 子传父
      • 2.3.3 兄弟传参
  • 总结


一、Vue生命周期

1.1 生命周期简介

  • 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。
  • 在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码!

周期图解:
zhouqi
常见钩子函数:

  • onMounted() 注册一个回调函数,在组件挂载完成后执行。
  • onUpdated() 注册一个回调函数,在组件因为响应式状态变更而更新其 DOM 树之后调用。
  • onUnmounted() 注册一个回调函数,在组件实例被卸载之后调用。
  • onBeforeMount() 注册一个钩子,在组件被挂载之前被调用。
  • onBeforeUpdate() 注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用。
  • onBeforeUnmount() 注册一个钩子,在组件实例被卸载之前调用。

1.2 生命周期案例

<script setup>import {ref,onUpdated,onMounted,onBeforeUpdate} from 'vue'let message =ref('hello')// 挂载完毕生命周期onMounted(()=>{console.log('-----------onMounted---------')let span1 =document.getElementById("span1")console.log(span1.innerText)})// 更新前生命周期onBeforeUpdate(()=>{console.log('-----------onBeforeUpdate---------')console.log(message.value)let span1 =document.getElementById("span1")console.log(span1.innerText)})// 更新完成生命周期onUpdated(()=>{console.log('-----------onUpdated---------')let span1 =document.getElementById("span1")console.log(span1.innerText)})
</script><template><div><span id="span1" v-text="message"></span> <br><input type="text" v-model="message"></div></template><style scoped>
</style>

1

二、Vue组件

2.1 组件基础

  • 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。
  • 组件就是实现应用中局部功能代码和资源的集合!
  • 在实际应用中,组件常常被组织成层层嵌套的树状结构:
    1
    这和我们嵌套 HTML 元素的方式类似,Vue 实现了自己的组件模型,使我们可以在每个组件内封装自定义内容与逻辑。

传统方式编写应用:
2

组件方式编写应用:
1

  • 组件化:对js/css/html统一封装,这是VUE中的概念

  • 模块化:对js的统一封装,这是ES6中的概念

  • 组件化中,对js部分代码的处理使用ES6中的模块化

2.2 组件化入门案例

案例需求: 创建一个页面,包含头部和菜单以及内容显示区域,每个区域使用独立组建!

1

  1. 创建vue项目
npm create vite
cd vite项目
npm install
  1. 安装相关依赖
npm install sass
npm install bootstrap
  1. 创建子组件 在src/components文件下 vscode需要安装Vetur插件,这样vue文件有快捷提示
    2
  • Header.vue
<script setup>
</script><template><div>欢迎:XX<a href="#">退出登录</a></div>
</template> <style scoped>
</style>
  • Content.vue
<script setup>
</script><template><div>展示内容</div>
</template> <style scoped>
</style>
  • Navigation.vue
<script setup>
</script><template><div><ul><li>学生管理</li><li>图书管理</li><li>老师管理</li><li>会员管理</li></ul></div>
</template> <style scoped>
</style>
  • App.vue
<script setup>
import Header from "./components/Header.vue";
import Navigation from "./components/Navigation.vue";
import Content from "./components/Content.vue";
</script><template><div><Header class="header"></Header><Navigation class="nav"></Navigation><Content class="content"></Content></div>
</template> <style scoped>
.header {height: 80px;border: 1px solid red;
}
.nav {width: 15.5%;height: 800px;border: 1px solid green;float: left;
}
.content {width: 84%;height: 800px;border: 1px solid yellow;float: right;
}
</style>

运行! npm run dev
OK

2.3 组件之间传递数据

  • 1. 父传子:

    • 父大包 -> 传参 给 子内包 数值
    • 1
  • 2. 子传父:

    • 子 内包 -> 传参给 父 大包
  • 3. 兄弟传参:

    • AB兄弟包 需要 通过父参数 传递
    • 也就是 执行了父传子子传父 两个过程
    • 4

2.3.1父传子

Vue3 中父组件向子组件传值可以通过 props 进行,具体操作如下:

  1. 首先,在父组件定义需要传递给子组件的,接着,在父组件的模板中引入子组件,同时在引入子组件的标签中添加 props 属性并为其设置需要传递的值

  2. 在 Vue3 中,父组件通过 props 传递给子组件的值是响应式的。也就是说,如果在组件中的传递的发生了改变组件中的也会相应地更新

2.3.2 子传父

2.3.3 兄弟传参

2

  • 子传父:

Navigation.vue :子发送参数 给App.vue

<script setup>
import { defineEmits } from "vue";
//1.定义要发送给父组件的方法,可以1或者多个
let emites = defineEmits(["sendMessage"]);function send(data) {//2.触发事件,向父容器发送数据emites("sendMessage", data);
}
</script><template><div><ul><!-- 3. 子组件绑定点击方法 传参 --><li @click="send('学生管理')">学生管理</li><li>图书管理</li><li>老师管理</li><li>会员管理</li></ul></div>
</template> <style scoped>
</style>

App.vue 接收从Nav…的参数

<script setup>
import Header from "./components/Header.vue";
import Navigation from "./components/Navigation.vue";
import Content from "./components/Content.vue";import { ref } from "vue";
//1.定义变量接收navigator传递的参数
var navigator_menu = ref("测试");// 2. 方法接收传递来的数据
const receiver = data => {navigator_menu.value = data;
};
</script><template><div><hr /><!-- 4. 显示数据 -->{{navigator_menu}}<hr /><Header class="header"></Header><!-- 3. 父组件绑定事件方法 接参 --><Navigation @sendMessage="receiver" class="nav"></Navigation><Content class="content"></Content></div>
</template> 

1

  • 父传子

App.vue 传递参数 给Context.vue

<script setup>
import Header from "./components/Header.vue";
import Navigation from "./components/Navigation.vue";
import Content from "./components/Content.vue";import { ref } from "vue";
//定义接受navigator传递参数
var navigator_menu = ref("测试");const receiver = data => {navigator_menu.value = data;
};
</script><template><div><hr />{{navigator_menu}}<hr /><Header class="header"></Header><Navigation @sendMessage="receiver" class="nav"></Navigation><!-- 向子组件传递数据--><Content class="content" :message="navigator_menu"></Content></div>
</template> <style scoped>
.header {height: 80px;border: 1px solid red;
}
.nav {width: 15.5%;height: 800px;border: 1px solid green;float: left;
}
.content {width: 84%;height: 800px;border: 1px solid yellow;float: right;
}
</style>
  • Content.vue 接收参数显示
<script setup>
import { defineProps } from "vue";defineProps({message: String
});
</script><template><div>展示内容:<hr />{{ message }}</div>
</template> <style scoped>
</style>

1


总结

兄弟传参:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/249223.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE spring】SpringBoot 统一功能处理

SpringBoot 统一功能处理 1. 拦截器1.1 拦截器快速⼊⻔1.2 拦截器详解1.2.1 拦截路径1.2.2 拦截器执⾏流程 1.3 登录校验1.3.1 定义拦截器1.3.2 注册配置拦截器 2. 统⼀数据返回格式2.1 快速⼊⻔2.2 存在问题2.3 案例代码修改2.4 优点 3. 统⼀异常处理 1. 拦截器 后端程序根据…

GIS应用水平考试一级—2009 年度第二次

全国信息化工程师——GIS应用水平考试 2009 年度第二次全国统一考试一级 试卷说明: 1、本试卷共9页,6个大题,满分150 分,150 分钟完卷。 2、考试方式为闭卷考试。 3、将第一、二、三題的答案用铅笔涂写到(NCIE-GIS)答题卡上。 4、将第四、五、六题的答案填写到主观题答题卡上…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

Netty源码三:NioEventLoop创建与run方法

1.入口 会调用到父类SingleThreadEventLoop的构造方法 2.SingleThreadEventLoop 继续调用父类SingleThreadEventExecutor的构造方法 3.SingleThreadEventExecutor 到这里完整的总结一下&#xff1a; 将线程执行器保存到每一个SingleThreadEventExcutor里面去创建了MpscQu…

六、VTK创建平面vtkPlaneSource

vtkPlaneSource创建位于平面中的四边形数组 先看看效果图: vtkPlaneSource 创建一个 m x n 个四边形数组,这些四边形在平面中排列为规则平铺。通过指定一个原点来定义平面,然后指定另外两个点,这两个点与原点一起定义平面的两个轴。这些轴不必是正交的 - 因此您可以创建平行…

ElementUI Form:Input 输入框

ElementUI安装与使用指南 Input 输入框 点击下载learnelementuispringboot项目源码 效果图 el-input.vue &#xff08;Input 输入框&#xff09;页面效果图 项目里el-input.vue代码 <script> export default {name: el_input,data() {return {input: ,input1: ,i…

prometheus和alertmanager inhibit_rules抑制的使用

172.16.10.21 prometheus 172.16.10.33 altermanager 172.16.10.59 mysql服务&#xff0c;node探针以及mysql的探针 [rootk8s-node02 ~]# docker ps -a CONTAINER ID IMAGE …

rancher证书过期问题处理

问题 起初&#xff0c;打开rancher ui页面打不开&#xff0c;telnet rancher的服务端口也不通。查看rancher 控制节点&#xff0c;日志显示&#xff0c;X509&#xff1a;certificate has expired or is not ye valid。证书已过期 解决 现在网上大部分的解决方案都是针对的2…

三维模型转求顶和底视图

有一项需求: 求出模型的任意方向的视图 本文写一个求顶视图和底视图的方式, 任意方向的视图只是投影平面方程不同而已 测试模型: 顶视图 底视图 顶部高度图(灰度, 未取材质颜色, 懒没写) 底部高度图(灰度) 本算法原理分以下几部: 1: 求模型外包围盒box, 根据顶视图输出大小…

喜讯 | 经纬恒润整车电子电气测试实验室通过一汽研发总院外部实验室资质认证!

近日&#xff0c;经纬恒润整车电子电气测试实验室成功通过中国一汽研发总院的资质评定&#xff0c;获得外部实验室认可证书。这是继经纬恒润测试实验室获得一汽智能网联开发院车载以太网测试资质认证之后的又一次认可&#xff0c;它将拓宽经纬恒润与红旗新能源及相关零部件供应…

websocket编写聊天室

【黑马程序员】WebSocket打造在线聊天室【配套资料源码】 总时长 02:45:00 共6P 此文章包含第1p-第p6的内容 简介 温馨提示&#xff1a;现在都是第三方支持聊天&#xff0c;如极光&#xff0c;学这个用于自己项目完全没问题&#xff0c;大项目不建议使用 需求分析 代码

adb 无线连接 操作Android设备

最近集五福活动比较热门 可以用这个工具 用自己擅长的语言写一个循环程序 运行起来就可以 自动帮我们 看视频得福卡了 很方便 while (true) {sleep(mt_rand(15, 25));system(adb shell input swipe 500 2000 500 1000 100); } 1. 首先下载 安卓开发工具 adb adb网盘链接 链接…

检测头篇 | 原创自研 | YOLOv8 更换 SEResNeXtBottleneck 头 | 附详细结构图

左图:ResNet 的一个模块。右图:复杂度大致相同的 ResNeXt 模块,基数(cardinality)为32。图中的一层表示为(输入通道数,滤波器大小,输出通道数)。 1. 思路 ResNeXt是微软研究院在2017年发表的成果。它的设计灵感来自于经典的ResNet模型,但ResNeXt有个特别之处:它采用…

【SpringBoot系列】自动装配的魅力:Spring Boot vs 传统Spring

IT行业有哪些证书含金量高? 文章目录 IT行业有哪些证书含金量高?强烈推荐前言区别项目配置&#xff1a;依赖管理&#xff1a;内嵌服务器&#xff1a;开发体验&#xff1a; 实例Spring项目示例&#xff1a;Spring Boot项目示例&#xff1a; 总结强烈推荐专栏集锦写在最后 强烈…

Dubbo框架注册中心-Zookeeper搭建

Dubbo 是阿里巴巴公司开源的高性能、轻量级的Java RPC框架&#xff0c;致力于提供高性能。 Dubbo官网 本篇开始dubbo的第一篇&#xff0c;注册中心 ZooKeeper 环境搭建。 环境前置&#xff1a;由于Zookeeper是基于Java环境&#xff0c;必须安装有JDK。查看命令 java -version。…

中科院国际预警期刊名单发布一周年,共8本期刊被剔除!

据官方消息称&#xff1a;2024年中科院《国际期刊预警名单》将于2024年1月更新&#xff0c;今天已经是2月1号了&#xff0c;距离去年的2023年版《国际期刊预警名单&#xff08;试行&#xff09;》发布已经一周年&#xff0c;在去年被列入预警名单的28本期刊中&#xff0c;截止目…

中国的茶文化:现代生活中的茶文化

中国的茶文化&#xff1a;现代生活中的茶文化 引言 在现代社会的快节奏生活中&#xff0c;茶文化并未随时间流逝而褪色&#xff0c;反而以其独特的方式融入了全球各地人们的日常生活。它超越了饮品本身的范畴&#xff0c;成为一种连接历史、人文与现代生活方式的艺术形式。本文…

Git命令窗口:创建一个.bashrc文件,别名实现git log (代替冗余的指令)查询提交修改日志功能

在我们的用户下创建一个.bashrc文件&#xff0c;然后添加如下代码。即可实现我们命令窗口由于每次想要看到好的效果而输入几条指令的问题。 这里我们就只需要使用 git-log 代替我们的git log。这样在命令窗口看到的效果就清晰明了。

Java后端须知的前端知识

Java后端须知的前端知识 HTML &#xff08;超文本标记语言&#xff09; W3C标准 结构&#xff1a;HTML表现&#xff1a;CSS行为&#xff1a;JavaScript 快速入门 <html><head><title></title></head><body><font color"red&q…

【CSS】常见

一. 溢出隐藏 1.1 单行文本溢出 .content{max-width:200px; /* 定义容器最大宽度 */overflow:hidden; /* 隐藏溢出的内容 */text-overflow:ellipsis; /* 溢出部分...表示 */white-space: nowrap; /* 确保文本在一行内显示 */ }问题&#xff1a;display:flex 和 ellipsis 冲…