网站首页 > 技术文章 正文
组件概述
在 Vue 3 中,组件是可重用的 UI 构件,可以通过组合来构建复杂的用户界面。组件允许开发者将复杂的界面拆分为更小、更易管理的部分。
组件的创建与使用
- 创建组件:
- 使用对象字面量定义组件。
- 使用 Vue.createApp() 创建应用实例,并注册组件。
- Props 和 Emits:
- Props:父组件向子组件传递数据。
- Emits:子组件向父组件发送事件。
- 组合式 API:
- 使用 setup() 函数进行逻辑处理。
- 使用 ref 和 reactive 管理响应式数据。
示例代码(Test.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入Vue3 -->
<script src="https://unpkg.com/vue@3"></script>
<title>组件的概念</title>
</head>
<body>
<div id="app">
<app />
</div>
<script>
// 定义子组件
const Hello = {
props:['message'],
emits:['updateMessage'],
setup(props,{emit}){
// 定义handleClick函数
const handleClick = () => {
emit('updateMessage','Message from child')
};
// 返回handleClick函数
return {
handleClick
};
},
// 定义模板
template: `
<dive>
<p>{{ message }}</p>
<button @click="handleClick">点击,给父组件传递消息</button>
</div>
`
};
// 定义父组件 App.
const App = {
setup(){
// 定义message变量
const message = Vue.ref('Hello from parent');
const handleEvent = (newMessage) => {
message.value = newMessage;
};
return {
// 返回message变量
message,
// 返回handleEvent函数
handleEvent
};
},
// 定义组件
components: {
Hello
},
// 定义模板
template: `
<div>
<p>子组件传过来的消息:{{ message }}</p>
<Hello :message="message" @updateMessage="handleEvent" />
</div>
`
};
// 创建应用实例并挂载
const app = Vue.createApp(App);
// 挂载到id为app的元素上
app.mount('#app');
</script>
</body>
</html>
代码解释
- 引入 Vue 3:
- 通过 CDN 引入 Vue 3 的完整版。
- 定义子组件 Hello:
- Props:接收 message 属性。
- Emits:定义 updateMessage 事件。
- Setup 函数:定义 handleClick 方法,触发事件。
- 定义父组件 App:
- Setup 函数:使用 Vue.ref 定义响应式数据 message,定义 handleEvent 方法处理子组件事件。
- Template:显示父组件的消息,并包含子组件 Hello。
- 挂载应用:
- 使用 Vue.createApp(App) 创建应用实例,并挂载到 #app 容器。
运行步骤
- 将上述代码保存为一个 .html 文件。
- 用浏览器打开该文件,查看效果。
- 点击子组件中的按钮,观察父组件消息的变化。
猜你喜欢
- 2025-01-11 手把手教你的Vue项目实战
- 2025-01-11 很香的几款开源免费的流程设计器
- 2025-01-11 测试开发如何快速上手Vue前端开发(上)
- 2025-01-11 Vue框架学习记录5
- 2025-01-11 Vue + SpringBoot 项目实战(三):我的助手之前后端联调
- 2025-01-11 Vue.js v3.0 教程-简单创建一个 Vue 应用
- 2025-01-11 超优秀 uniapp+vue3 ts 跨端组件库TMUI
- 2025-01-11 Vue3.2 语法基础详解
- 2025-01-11 .NETCore3.1+Vue.js打造的低代码工作流引擎
- 2025-01-11 无需写代码!可一键生成前后端代码的开源工具
- 最近发表
-
- fail-safe 和 fail-fast 都是什么鬼?
- 办公小技巧:Word“安全模式”用通透
- 新来的妹子误执行 “rm -rf” !_七零大院新来的小美人是黑道千金
- 如何利用 Python 自动发邮件,打工人福音
- Python内置模块base64 :Base16, Base32, Base64, Base85 编码详解
- java调用API操作GitLab_java调用git的接口
- spingboot 实现导入excel数据生成二维码
- SpringBoot中7个文件上传下载工具
- java项目中接入大模型,简历必备_java介绍项目中做过的模块
- spring boot-MultipartFile 机制_spring boot multipartfile为null
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)