uniapp组件封装和父子组件间通讯的介绍和详细案例

news/2024/9/25 15:59:00/

Uniapp 是一个使用 Vue.js 开发跨平台应用的前端框架,组件封装和父子组件间通讯是其重要的特性之一。

一、组件封装

  1. 为什么要封装组件

    • 提高代码的可维护性和可复用性。将特定功能封装成独立的组件,可以在不同的页面或项目中重复使用,减少代码重复。
    • 更好的代码组织。将复杂的页面拆分成多个小的组件,使得代码结构更加清晰,易于理解和维护。
    • 便于团队协作。不同的开发人员可以独立开发和维护不同的组件,提高开发效率。
  2. 如何封装组件

    • 创建组件文件。在 Uniapp 项目中,可以在components目录下创建一个新的 Vue 文件来定义组件。
    • 定义组件的模板、脚本和样式。在组件文件中,可以使用 Vue 的语法来定义组件的模板、脚本和样式。
    • 注册组件。在需要使用组件的页面或父组件中,通过import导入组件,并在components选项中注册组件。

例如,创建一个名为my-component的组件:

<!-- my-component.vue -->
<template><div><h1>{{ title }}</h1><p>{{ content }}</p></div>
</template><script>
export default {name: "my-component",props: {title: String,content: String,},
};
</script><style scoped>
h1 {color: blue;
}
p {font-size: 14px;
}
</style>

在页面中使用该组件:

<!-- index.vue -->
<template><div><my-component title="Hello" content="World" /></div>
</template><script>
import myComponent from "@/components/my-component.vue";export default {components: {myComponent,},
};
</script>

二、父子组件间通讯

  1. 父组件向子组件传递数据
    • 使用props属性。在子组件中定义props选项,接收父组件传递过来的数据。父组件在使用子组件时,可以通过属性绑定的方式将数据传递给子组件。

例如,父组件向子组件传递数据:

<!-- parent.vue -->
<template><div><child-component :message="parentMessage" /></div>
</template><script>
import childComponent from "@/components/child-component.vue";export default {components: {childComponent,},data() {return {parentMessage: "Hello from parent",};},
};
</script>

子组件接收数据:

<!-- child-component.vue -->
<template><div><p>{{ message }}</p></div>
</template><script>
export default {name: "child-component",props: {message: String,},
};
</script>
  1. 子组件向父组件传递数据
    • 使用自定义事件。在子组件中,可以通过$emit方法触发自定义事件,并传递数据给父组件。父组件在使用子组件时,可以通过v-on指令监听子组件触发的事件,并接收数据。

例如,子组件向父组件传递数据:

<!-- child-component.vue -->
<template><div><button @click="sendMessage">Send Message</button></div>
</template><script>
export default {name: "child-component",methods: {sendMessage() {this.$emit("send-message", "Hello from child");},},
};
</script>

父组件接收数据:

<!-- parent.vue -->
<template><div><child-component @send-message="receiveMessage" /><p>{{ childMessage }}</p></div>
</template><script>
import childComponent from "@/components/child-component.vue";export default {components: {childComponent,},data() {return {childMessage: "",};},methods: {receiveMessage(message) {this.childMessage = message;},},
};
</script>

通过以上方式,可以实现 Uniapp 中的组件封装和父子组件间的通讯,提高代码的可维护性和可复用性。


http://www.ppmy.cn/news/1530355.html

相关文章

让C#程序在linux环境运行

今晚花一些时间&#xff0c;总结net程序如何在linux环境运行的一些技术路线。 1、采用.Net Core框架 NET Core 使用了 .NET Core Runtime&#xff0c;它可以在 Windows、Linux 和 macOS 等多个操作系统上运行。可以采用Visual Studio生成Linux版本的dll。 在Linux系统中&…

C++的哲学思想

C的哲学思想 文章目录 C的哲学思想&#x1f4a1;前言&#x1f4a1;C的哲学思想☁️C底层不应该基于任何其他语言&#xff08;汇编语言除外&#xff09;☁️只为使用的东西付费&#xff08;不需要为没有使用到的语言特性付费&#xff09;☁️以低成本提供高级抽象&#xff08;更…

前端框架对比与选择指南

在现代 web 开发中&#xff0c;前端框架的选择对项目的成功与开发效率至关重要。本文将对当前流行的前端框架进行深入对比&#xff0c;帮助开发者在 Angular、React 和 Vue.js 中做出明智的选择。更多内容&#xff0c;请查阅 1. 框架概述 1.1 Angular Angular 是由谷歌开发的…

Angular面试题五

一、请解释Angular中的管道是什么&#xff0c;并列举几个内置的管道。 Angular中的管道&#xff08;Pipe&#xff09;是一种强大的工具&#xff0c;用于在Angular模板中处理和转换数据&#xff0c;并将其呈现给用户。管道可以将输入数据&#xff08;如字符串、数字、日期等&…

快速订餐:Spring Boot 点餐系统

第二章关键技术的研究 2.1相关技术 网上点餐系统是在Java MySQL开发环境的基础上开发的。Java是一种服务器端脚本语言&#xff0c;易于学习&#xff0c;实用且面向用户。全球超过35&#xff05;的Java驱动的互联网站点使用Java。MySQL是一个数据库管理系统&#xff0c;因为它的…

视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?

视频汇聚EasyCVR视频监控平台&#xff0c;作为一款智能视频监控综合管理平台&#xff0c;凭借其强大的视频融合汇聚能力和灵活的视频能力&#xff0c;在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性&#xff0c;支持多种视频流的外部分发&…

ubuntu查看全部的磁盘分区命令

要查看所有磁盘和分区&#xff0c;你可以使用以下命令&#xff1a; 使用fdisk命令&#xff1a; sudo fdisk -l这将列出所有磁盘及其分区。 使用lsblk命令&#xff1a; lsblk -f这将显示磁盘和分区的层次结构以及文件系统类型。 使用parted命令&#xff1a; sudo parted -l这个…

掌握Android开发新趋势:Jetpack与现代架构技术全解析

随着Android开发技术的不断进步&#xff0c;Jetpack和现代架构技术已成为构建高效、可维护应用的关键。本文将为您介绍一套全面的学习资料&#xff0c;包括大纲、PDF文档、源代码以及学习视频&#xff0c;帮助您深入理解Jetpack核心库、架构组件以及现代开发工具。 内容&#…