Vue3——组件基础

组件基础


1. 组件定义与使用
1.1 代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>组件基础</title><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body><div style="border: 1px solid #949494;padding: 20px;margin-top: 10px;"><h2>1. 组件定义与使用</h2><!-- 3. 将组件用标签表示 --><div id="app"><abc></abc><p>===============================</p><abc></abc></div><script>// 1. 定义组件,与定义数据对象的差别是template选项const x = {data(){return{count: 0}},template: `<button @click='count++'>点击{{count}}次</button>`}const app = Vue.createApp({})// 将数据绑定到对象中app.component('abc',x)app.mount('#app')</script></div>
</body>
</html>
1.2 效果图

在这里插入图片描述

在这里插入图片描述

2. 局部组件与全局组件
2.1 代码
    <div style="border: 1px solid #949494;padding: 20px;margin-top: 10px;"><h2>2. 局部组件与全局组件</h2><div id="app2"><p>(1)组件counter</p><counter></counter><br><br><p>(2)这个组件中调用全局组件counter</p><my-message></my-message></div><script>// 注册组件counterconst counter = {data(){return{count: 0}},template: `<button @click="count++">您点击了{{count}}次</button>`}// 注册组件my-messageconst message = {data(){return{msg: '第二组件'}},// 在这个组件中调用全局组件countertemplate: `<div border=1>{{msg}}<br><counter></counter></div>`}// 实例化 放在实例对象里面声明的组件为局部组件const app2 = Vue.createApp({data(){return{msg: 'Vue全局组件与局部组件'}},// 放在实例中的components属性中就是局部组件components: {'my-message': message}})// 放在实例外面并且用component函数注册的组件就是全局组件// 全局组件可以在其他的组件中使用app2.component('counter',counter)app2.mount('#app2')</script></div>
2.2 效果图

在这里插入图片描述

在这里插入图片描述

3. 父组件与子组件
3.1 代码
    <div style="border: 1px solid #949494;padding: 20px;margin-top: 10px;"><h2>3. 父组件与子组件</h2><div id="app3"><my-box></my-box></div><!-- 在A组件里面又嵌套了B组件,A称之为父组件 ,B称之为子组件 --><script>const counter3 = {data(){return{x: 0}},template: `<button @click='x++'>单击{{x}}次</button>`}const box = {template: `<div style="height: 300px;width: 300px;background: wheat;text-align: center;"><counter3></counter3></div>`,// 将组件counter设置为box组件的子组件components: {counter3: counter3}}const app3 = Vue.createApp({})app3.component('my-box',box)app3.mount('#app3')</script></div>
3.2 效果图

在这里插入图片描述

在这里插入图片描述

4. 父组件传值给子组件(props属性的使用)
4.1 代码
    <div style="border: 1px solid #949494;padding: 20px;margin-top: 10px;"><h2> 4. 父组件传值给子组件(props属性的使用)</h2><div id="app4"><!-- 3.属性传值,父组件传值给子组件 --><my-box4 :name="name" :colleges="colleges"></my-box4></div><script>const mybox4 = {//1.通过props来接收父组件传值props: ['name', 'colleges'],template: `<div><p>{{name}}</p><ul><li v-for="item in colleges">{{item}}</li></ul></div>`}const app4 = Vue.createApp({// 2.在父组件中设置值data() {return {name: '王五',colleges: ['语文', '数学', '英语', '化学']}},components: {"my-box4": mybox4}})app4.mount('#app4')</script></div>
4.2 效果图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5. 事件发射: 子组件传值给父组件
5.1 代码
    <div style="border: 1px solid #949494;padding: 20px;margin-top: 10px;"><h2>5. 事件发射: 子组件传值给父组件</h2><template id="box5"><div style="background-color: antiquewhite;width: 200px;height: 200px;"><button @click="myfun">点击</button></div></template><div id="app5" style="background-color: rgb(224, 215, 250);width: 300px;height: 300px;padding: 20px;"><!-- 4.子组件标签中捆绑事件 --><my-box5 @box-click="boxclick"></my-box5></div><script>const mybox5 = {template: `#box5`,methods: {// 1.子组件定义事件myfun(){const dataobj = {name: '李四',info: 'my name is lisi'}// 2.在子组件中通过$emit方法定义事件发射,第一个参数为事件名,第二参数为数据this.$emit('box-click',dataobj)}}}Vue.createApp({//  3.父组件中定义接收事件发射的方法methods: {boxclick(data){console.log(data)}},components: {"my-box5": mybox5}}).mount('#app5')</script></div>
5.2 效果图

在这里插入图片描述
点击后
在这里插入图片描述

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

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

相关文章

linux中如何挂载yum云仓库进行软件的安装

1.首先在根目录下建立文件&#xff0c;用来挂载镜像文件 [rootclient ~]# mkdir /rhel9 2.挂载镜像文件&#xff1a; [rootclient ~]# mount /dev/cdrom /rhel9 3.切换到 /etc/yum.repos.d 下的目录并查看 &#xff0c;创建 rhel9.repo文件&#xff0c;并编辑云仓库域名&am…

ubuntu在xshell中使用快捷方式操作命令,减少命令行的数入量

第一步 第二步 然后无脑确定 第三步 在xshell的显示方式 方式一 这样就会在每个窗格中进行显示 方式二 效果显示–> 这种窗格的显示是全局的 然后你双击这个process就会自动把命令打在命令行上&#xff0c;减少你的输入量

操作教程丨MaxKB+Ollama:快速构建基于大语言模型的本地知识库问答系统

2024年4月12日&#xff0c;1Panel开源项目组正式对外介绍了其官方出品的开源子项目——MaxKB&#xff08;github.com/1Panel-dev/MaxKB&#xff09;。MaxKB是一款基于LLM&#xff08;Large Language Model&#xff09;大语言模型的知识库问答系统。MaxKB的产品命名内涵为“Max …

JUC面试——⭐⭐Java中的四种引用类型/Threadlocal

四种引用类型 Java 中对象的引用分为四种级别&#xff0c;这四种级别由高到低依次为&#xff1a;强引用、软引用、弱引用和虚引用。 基础知识 强引用&#xff1a;普通使用的引用 强引用是造成 Java 内存泄漏的主要原因之一 软引用&#xff1a; GC内存不够时回收 适用于&…

4.18学习总结

多线程补充 等待唤醒机制 现在有两条线程在运行&#xff0c;其中一条线程可以创造一个特殊的数据供另一条线程使用&#xff0c;但这个数据的创建也有要求&#xff1a;在同一时间只允许有一个这样的特殊数据&#xff0c;那么我们要怎样去完成呢&#xff1f;如果用普通的多线程…

路由器热备份

HSRP HSRP&#xff08;Hot Standby Routing Protocol&#xff09;热备份路由选择协议 HSRP是思科私有的协议&#xff0c;HSRP起到一个双网关热备份的一个目的&#xff0c;不考虑线路问题针对设备而言&#xff0c;一个设备挂了还有另外一台设备&#xff0c;所以双网关也叫双机…

IntelliJ IDEA运行发布传统Java Web Application项目

接 重温8年前项目部署 要求&#xff0c;如何改用IntelliJ IDEA运行发布传统 Java Web Application项目呢&#xff0c;简述步骤如下&#xff1a; 一、下载源码 源码&#xff1a;https://github.com/wysheng/kindergarten 下载后的本地项目路径&#xff1a;/Users/songjianyon…

C语言Linux vim shell命令

1. actionmotion dG删到文件尾 ggdG先到开头再删除到末尾 d^到达行首 d$到行尾 2. num action 2dd删除两行 t"向后寻找"找到&#xff0c;找到前面一个位置 f"向后寻找"找到&#xff0c;直接找到本来的位置 diw删除单词并保持在视图状态&#xff…

牛客-小乐乐与欧几里得

目录 题目 描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 示例2 解题 题目 描述 小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数&#xff0c;但是他竟然不会求两个正整数的最大公约数与最小公倍数之和&#xff0c;请你帮助他解决这个问题。 …

nginx--Nginx转发真实的IP

Nginx转发真实的IP 前言给nginx.conf 设置proxy_set_headerjava 程序里获取 前言 在使用nginx的时候可能会遇到判断是不是本机在做操作&#xff0c;这样的话web端我们是可以通过ip和端口进行远程连接的这样的话我们就需要从后端获取到真实ip来判断是不是指定的机器了&#xff…

一台服务器同时启动两个版本jdk

之前Java项目都是1.8的jdk&#xff0c;在服务器部署正常使用&#xff0c;服务器配置环境变量jdk1.8版本。最近一次我用了jdk17版本&#xff0c;部署服务器后&#xff0c;遇见了jdk版本不一致报错 报错内容&#xff1a; 52指向jdk1.8,61指向jdk17&#xff0c;大概就是jdk版本不…

Arduino UNO驱动MPR121接近电容式触摸传感器控制WS2812彩灯

简介 MPR121芯片功能强大可用作触摸,电容检测,驱动LED等等.在低速扫描下可以将功 耗降低到8μA,可以处理多达12个独立的触摸板。支持I2C,几乎可以用任何微控 制器连接。可以使用ADDR引脚选择4个地址中的一个,一个I2C2线总线上共有48 个电容触摸板。使用该芯片比使用模拟输入进行…