当前位置: 首页 > news >正文

Vue 父子页面使用指南

Vue3父子页面使用指南

Vue3作为一种现代化的前端框架,提供了强大的组件化功能,使得页面开发更加模块化和可维护。本文将深入探讨Vue3中父子页面的使用方法,包括如何传递参数、父组件如何调用子组件的方法,以及父子页面的加载原理。

1. 父子页面的基本概念

在Vue3中,页面被拆分成多个组件,每个组件都可以看作是一个独立的页面单元。父子组件之间的通信和交互是Vue开发中的基础部分。

2. 传递参数给子组件
2.1 Props属性传递

Props是Vue中父子组件通信的标准方式,通过在子组件上声明props来接收父组件传递的数据。

在父组件中通过props属性向子组件传递数据,示例代码如下:

// ParentComponent.vue
<template><ChildComponent :message="parentMessage" />
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent,},data() {return {parentMessage: 'Hello from Parent',};},
};
</script>
// ChildComponent.vue
<template><div>{{ message }}</div>
</template><script>
export default {props: {message: String,},
};
</script>
2.2 使用Provide/Inject API

Provide/Inject API允许跨多层级传递数据,适用于复杂组件结构。

// ParentComponent.vue
<template><div><GrandparentComponent /></div>
</template><script>
import { provide } from 'vue';
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent,},setup() {provide('message', 'Hello from Parent');},
};
</script>
// ChildComponent.vue
<template><div><ChildGrandComponent /></div>
</template><script>
import { inject } from 'vue';
import ChildGrandComponent from './ChildGrandComponent.vue';export default {components: {ChildGrandComponent,},setup() {const message = inject('message');return {message,};},
};
</script>
3. 父组件调用子组件的方法

有时候,父组件需要调用子组件中的方法来实现特定的功能。Vue3中可以通过ref来获取子组件的实例,并调用其方法。

// ParentComponent.vue
<template><div><ChildComponent ref="childRef" /><button @click="callChildMethod">调用子组件方法</button></div>
</template><script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent,},setup() {const childRef = ref(null);function callChildMethod() {childRef.value.childMethod();}return {childRef,callChildMethod,};},
};
</script>
// ChildComponent.vue
<template><div>子组件内容</div>
</template><script>
export default {methods: {childMethod() {console.log('子组件方法被调用');},},
};
</script>
4. 父子页面的加载原理

在Vue3中,父子组件的加载顺序和生命周期钩子函数的调用顺序是需要开发者了解的重要部分。父组件在渲染过程中会先完成自身的渲染和挂载,然后才会渲染和挂载子组件。

具体来说:

  • 父组件的加载:当一个父组件被加载时,Vue会先执行父组件的setup()函数或beforeCreate生命周期钩子,然后执行onMounted生命周期钩子。父组件的模板在mounted阶段渲染完成后,才会开始加载子组件。

  • 子组件的加载:子组件的加载顺序取决于它们在父组件模板中的位置和声明顺序。Vue会在父组件渲染期间解析子组件的定义,并在适当的时机创建和挂载子组件实例。

5. 生命周期钩子函数

在Vue3中,组件的生命周期钩子函数提供了一组钩子函数,用于在组件不同阶段执行特定的逻辑。理解这些生命周期钩子函数有助于开发者控制组件的行为和优化性能。

主要的生命周期钩子函数包括:

  • beforeCreate:在实例初始化之后,数据观测 (dataprops) 和事件配置之前被调用。

  • created:实例已经创建完成之后被调用。在这一阶段,实例已完成以下的配置:数据观测 (dataprops),属性和方法的运算,watch/event 事件回调。然而,挂载阶段尚未开始,$el 属性目前不可见。

  • beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。

  • mounted:挂载完成时被调用:这时,实例已经完成了以下的配置:数据观测,属性和方法的运算,watch/event 事件回调。然而,挂载阶段尚未开始,$el 属性目前不可见。

  • beforeUpdate:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。

  • updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁后调用。

  • beforeUnmount:在卸载之前调用。在这一阶段,实例仍然完全可用。

  • unmounted:在卸载完成后调用。该钩子函数被调用后,组件实例指示的所有指令已被解绑,所有事件侦听器已被移除,所有子实例被销毁。

这些钩子函数允许开发者在不同的阶段执行自定义的逻辑,例如数据初始化、DOM操作、和清理资源等。

Vue 3 script setup 在父子组件通信中的应用

1. <script setup> 简介

Vue 3 引入了 <script setup> 作为定义 Vue 组件的简写方式,将 propsdatamethods 和生命周期钩子封装在一个 setup 函数中。这种方式简化了组件的设置,并促进了更加函数式的编程风格。

2. 父子组件的使用
父组件:
<template><div><h2>父组件</h2><ChildComponent :message="parentMessage" @childMethod="handleChildMethod" /></div>
</template><script setup>
import ChildComponent from './ChildComponent.vue';const parentMessage = '来自父组件的问候!';const handleChildMethod = () => {console.log('父组件收到子组件方法调用');
};
</script>
子组件 (ChildComponent.vue):
<template><div><h3>子组件</h3><button @click="callParentMethod">调用父组件方法</button></div>
</template><script setup>
import { defineProps, defineEmits } from 'vue';const props = defineProps({message: String
});const emit = defineEmits(['childMethod']);const callParentMethod = () => {emit('childMethod');
};
</script>
3. 参数传递

在 Vue 3 中,可以通过 props 将参数从父组件传递给子组件。

示例:
<!-- 父组件 -->
<ChildComponent :message="parentMessage" />
<!-- 子组件 -->
<script setup>
import { defineProps } from 'vue';const props = defineProps({message: String
});
</script>
4. 父组件如何调用子组件方法

父组件可以通过 Vue 的事件发射机制 ($emit) 调用子组件中定义的方法。

示例:
<!-- 子组件 -->
<template><button @click="triggerParentMethod">触发父组件方法</button>
</template><script setup>
import { defineEmits } from 'vue';const emit = defineEmits(['parentMethod']);const triggerParentMethod = () => {emit('parentMethod');
};
</script>
<!-- 父组件 -->
<ChildComponent @parentMethod="handleChildMethod" />
<script setup>
const handleChildMethod = () => {console.log('父组件收到子组件方法调用');
};
</script>

结语

通过深入了解Vue3中父子页面的加载原理和生命周期钩子函数,开发者能够更好地掌握组件的工作机制和优化策略,提升应用的性能和用户体验。

相关文章:

Vue 父子页面使用指南

Vue3父子页面使用指南 Vue3作为一种现代化的前端框架&#xff0c;提供了强大的组件化功能&#xff0c;使得页面开发更加模块化和可维护。本文将深入探讨Vue3中父子页面的使用方法&#xff0c;包括如何传递参数、父组件如何调用子组件的方法&#xff0c;以及父子页面的加载原理…...

TVBox自定义配置+软件密码版本

apk地址 : https://gitee.com/wheat-wheat/kekeda-duck-apk 1、安装安卓SDK Android SDK Windows 安装及环境配置教程_sdk manager windows-CSDN博客 修改点: 基础配置: java版本:...

Java单体架构项目_云霄外卖-特殊点

项目介绍&#xff1a; 定位&#xff1a; 专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件商品 分为&#xff1a; 管理端&#xff1a;外卖商家使用 用户端&#xff08;微信小程序&#xff09;&#xff1a;点餐用户使用。 功能架构&#xff1a; &#xff08…...

一文搞懂 java 线程池:ScheduledThreadPool 和 WorkStealingPool 原理

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

轮换IP是什么?——深入了解轮换IP的特点

大家在日常上网时&#xff0c;可能听说过“轮换IP”这个词。那么&#xff0c;轮换IP到底是什么&#xff1f;它有哪些特点&#xff1f;今天&#xff0c;我们就来揭开轮换IP的神秘面纱。 什么是轮换IP&#xff1f; 简单来说&#xff0c;轮换IP是指定期更换上网时使用的IP地址。…...

中英双语介绍美国的州:华盛顿州(Washington)

中文版 华盛顿州简介 华盛顿州&#xff08;Washington&#xff09;位于美国太平洋西北地区&#xff0c;以其壮丽的自然景观和蓬勃发展的经济闻名。以下是对华盛顿州的详细介绍&#xff0c;包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 华盛顿州北接加拿大…...

美工画师必看!AI绘画Stable Diffusion 一键生成 B 端图标教程,轻松制作商业可用的设计图标,从此告别加班!(附安装包)

大家好&#xff0c;我是画画的小强 在日常工作中&#xff0c;设计师在应对运营和UI设计的B端图标时&#xff0c;常常面临大量的构思、制作和渲染等工作&#xff0c;耗时耗力。我们可以利用Stable Diffusion(以下简称SD)结合AI的方式&#xff0c;帮助设计师优化图标的设计流程&…...

使用表单系统快速搭建邀请和签到系统

在组织活动时&#xff0c;邀请和签到环节往往是活动成败的关键之一。传统的纸质邀请和签到方式不仅费时费力&#xff0c;还容易出现各种问题&#xff0c;例如名单遗漏、签到混乱等。而使用TDuckX“搭建邀请和签到系统”将彻底改变这一现状&#xff0c;为活动组织者提供了一种高…...

Vue 3 入门与精通:为初学者打造的全面学习指南

引言&#xff1a; Vue.js&#xff0c;这款由尤雨溪创建的轻量级前端框架&#xff0c;以其简洁的API、双向数据绑定和组件化的开发模式&#xff0c;深受广大开发者喜爱。Vue 3 的发布&#xff0c;带来了更多的性能优化和功能增强&#xff0c;为开发者提供了更广阔的空间。本文旨…...

React+TS前台项目实战(二十四)-- 全局常用绘制组件Qrcode封装

文章目录 前言Qrcode组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示(pc端 / 移动端) 总结 前言 今天要封装的Qrcode 组件&#xff0c;是通过传入的信息&#xff0c;绘制在二维码上&#xff0c;可用于很多场景&#xff0c;如区块链项目中的区块显示交易地址时就可以用到…...

寄5公斤哪个快递便宜?寄10多斤的物品怎么寄最划算?

作为一个频繁需要寄东西的大学生&#xff0c;每次选择快递公司都是一件头疼的事。尤其是寄5公斤左右的包裹&#xff0c;既要考虑价格&#xff0c;又要看服务质量。今天&#xff0c;我就来分享一些寄5公斤包裹省钱的干货&#xff0c;希望能帮到大家。云木寄快递首先要推荐的就是…...

【postgresql】索引

见的索引类型&#xff1a; B-tree 索引&#xff1a;这是最常用的索引类型&#xff0c;适用于大多数查询。B-tree索引可以高效地处理范围查询。 Hash 索引&#xff1a;适用于等值查询&#xff0c;但不支持范围查询。 GiST 索引&#xff1a;通用搜索树&#xff08;GiST&#xf…...

2D Game Kit在unity的使用

本文参考&#xff1a; 如何制作游戏&#xff1f;【不需要编程 __】新手30分钟 学会制作2D游戏&#xff01;_ 如何制作游戏 _ unity教学 _ 制作游戏 _ 2d游戏_哔哩哔哩_bilibili 1、下载2d game kit 新建一个unity工程&#xff0c;进入该工程后&#xff0c;在Window -> Ass…...

使用中国大陆镜像源安装最新版的 docker Deamon

在一个智算项目交付过程中&#xff0c;出现了新建集群中的全部 docker server V19 进程消失、仅剩 docker server 的 unix-socket 存活的现象。 为了验证是否是BD产品研发提供的产品deploy语句缺陷&#xff0c;需要在本地环境上部署一个简单的 docker Deamon 环境。尴尬的是&a…...

机器学习原理之 -- 支持向量机分类:由来及原理详解

支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是统计学习理论的一个重要成果&#xff0c;广泛应用于分类和回归问题。SVM以其高效的分类性能和良好的泛化能力在机器学习领域中占据重要地位。本文将详细介绍支持向量机的由来、基本原理、构建过程及其优缺点。…...

华为机试HJ8合并表记录

华为机试HJ8合并表记录 题目&#xff1a; 数据表记录包含表索引index和数值value&#xff08;int范围的正整数&#xff09;&#xff0c;请对表索引相同的记录进行合并&#xff0c;即将相同索引的数值进行求和运算&#xff0c;输出按照index值升序进行输出。 想法&#xff1a…...

Leetcode 2043简易银行交易系统

题目描述 简易银行系统 尝试过 中等 相关标签 相关企业 提示 你的任务是为一个很受欢迎的银行设计一款程序&#xff0c;以自动化执行所有传入的交易&#xff08;转账&#xff0c;存款和取款&#xff09;。银行共有 n 个账户&#xff0c;编号从 1 到 n 。每个账号的初始余额存储…...

适合职场小白的待办事项管理方法和工具

刚入职场那会儿&#xff0c;我每天都像只无头苍蝇&#xff0c;忙得团团转却效率低下。待办事项像潮水般涌来&#xff0c;会议、报告、客户跟进……每一项都像是悬在头顶的利剑&#xff0c;让我焦虑不堪。我深知&#xff0c;管理好待办事项是职场生存的必修课&#xff0c;但该如…...

相机参数与图像处理技术解析

01. 相机内参和外参的含义&#xff1f;如果将图像放大两倍&#xff0c;内外参如何变化&#xff1f; 相机有两个最基础的数据&#xff1a;内参(Instrinsics)和外参(Extrinsics)&#xff0c;内参主要描述的是相机的CCD/CMOS感光片尺寸/分辨率以及光学镜头的系数&#xff0c;外参主…...

Ubuntu20.04安装Prometheus监控系统

环境准备&#xff1a; 服务器名称内网IP公网IPPrometheus服务器192.168.0.23047.119.21.167Grafana服务器192.168.0.23147.119.22.8被监控服务器192.168.0.23247.119.22.82 更改主机名方便辨认 hostnamectl set-hostname prometheus hostnamectl set-hostname grafana hostn…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...