news 2026/7/1 15:30:29

Vue3-Day2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue3-Day2

一. 组件定义与父子组件传值

把页面拆成小块代码,一块独立功能就是组件,可以重复使用。
分两类:
父组件:引入、使用别人的组件
子组件:被引入、接收父传数据

父组件

<script setup lang="ts"> import Child from './Child.vue' // 引入子组件 </script> <template> 我是父组件 <br> <Child/> </template>

子组件用 defineProps 接收

<script setup lang="ts"> // 父组件 -> 子组件传值 // props作用:父组件给子组件传递数据 const props = defineProps({ msg: { type: String, // 限定字符串 required: false, // 非必传 default: "未传值" // 不传时默认值 } }) </script> <template> <div> 我是子组件 <br> 传值:{{ msg }} <br> </div> </template>

二. 子传父:defineEmits(配套补充)

父组件

<script setup lang="ts"> import Child from './Child.vue' // 引入子组件 import {ref} from 'vue' // 引入子组件 const msg = ref('父组件原值') const getMsg = (value: string) => { msg.value = value } </script> <template> 我是父组件 <br> 子组件传的值:{{ msg }} <Child @change-msg="getMsg"/> </template>

子组件

<script setup lang="ts"> // 子组件 - > 父组件传值 const emit = defineEmits<{ 'change-msg': [msg: string] }>() const send = () => { emit('change-msg', '子组件传给父组件') } </script> <template> <div> 我是子组件 <br> <button @click="send">传值给父组件</button> </div> </template>

三. 生命周期

生命周期:组件从创建 → 渲染页面 → 更新 → 销毁全过程自动触发的函数。
Vue3 在 setup 里使用,必须先导入,不能写在函数 / 异步里面。

一. 执行完整顺序(从上到下)

  1. setup()<script setup>最先执行(比所有生命周期都早)
  2. onBeforeMount:DOM 还没渲染,页面空白
  3. onMounted:DOM 渲染完成,页面元素已经存在(最常用)
  4. onBeforeUpdate:数据变了,页面还没更新
  5. onUpdated:页面 DOM 更新完毕
  6. onBeforeUnmount:组件销毁前,DOM 还在
  7. onUnmounted:组件销毁完成,DOM 被移除

二. 父子组件执行顺序

  1. 父 setup
  2. 父 onBeforeMount
  3. 子 setup
  4. 子 onBeforeMount
  5. 子 onMounted
  6. 父 onMounted

三. 高频使用场景记忆

  1. 一进页面请求接口、获取 DOM → onMounted
  2. 组件关闭清除定时器 / 监听 → onUnmounted
  3. 数据变化后操作最新 DOM → onUpdated

四. 组件拆分复用

拆分组件可以使得代码解耦、可复用、提高可维护性。拆分原则要遵循单一职责、可复用、层级拆分等。

基础复用 - 全局公共组件
定义全局组件、在main.ts全局注册,后续使用不需要导入

import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' import Card from './components/Card.vue' // 全局组件 const app = createApp(App) app.use(createPinia()) app.component('Card', Card) // 全局注册 app.mount('#app')

使用全局注册的公共组件

<script setup lang="ts"> // import Card from './Card.vue'; </script> <template> 我是父组件<br> <!-- 不需要导入,可以直接使用 --> <Card/> </template>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 15:28:03

佛山网站设计哪个好

中小企业网站开发&#xff0c;选对合作伙伴比选“低价”更重要“网站开发哪家好&#xff1f;”这是许多中小企业在数字化转型路上遇到的第一个难题。面对动辄十万的报价、看不明白的技术文档、以及网站上花哨的承诺&#xff0c;很多老板心里都在犯嘀咕&#xff1a;这钱花得值吗…

作者头像 李华
网站建设 2026/7/1 15:23:23

说明 args.gn 与 WebView/Chromium 的关系 如何编译chromium

cd ~/chromium/src autoninja -j112 -C out/Chrome chrome_public_apk 编译完成后 产物路径&#xff1a; ~/chromium/src/out/Chrome/apks/ChromePublic.apk 拷到 00&#xff1a; cp ~/chromium/src/out/Chrome/apks/ChromePublic.apk ~/work//vendor/3rd/Chromium/Chromium.a…

作者头像 李华
网站建设 2026/7/1 15:20:11

什么 Context 才是 Agent 真正的“大脑“?一文讲透上下文工程

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…

作者头像 李华
网站建设 2026/7/1 15:18:29

如何用PowerShell脚本快速精简Windows 11系统:tiny11builder完整指南

如何用PowerShell脚本快速精简Windows 11系统&#xff1a;tiny11builder完整指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 你是否厌倦了Windows 11系统越来…

作者头像 李华
网站建设 2026/7/1 15:14:30

AI大模型选型决策树(企业级部署避坑手册):从Token成本、上下文长度到合规性,一图掌握2024最优解

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI大模型选型决策树总览与核心逻辑 AI大模型选型并非简单比拼参数规模&#xff0c;而是一个多维度权衡过程&#xff0c;需综合考虑任务场景、算力约束、数据隐私、推理延迟及运维成本五大核心要素。决策树的本…

作者头像 李华