Vue 组件通信 - 父传子

embedded/2025/3/6 2:31:56/

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 组件通信 - 父传子

目录

组件通信

父传子示例1

封装导航

右侧按钮显示与隐藏

属性验证

父传子示例2

总结


组件通信

父传子示例1

封装导航

组件父传子示例,通过对导航封装为组件来做演示。

首先封装一个全局的导航组件,接收一个myname参数。

示例如下:

<script src="../lib/vue.js"></script>
<div id="box"><div style="background-color: yellow">根组件标题</div><navbar myname="首页"></navbar><navbar myname="分类"></navbar>
</div>
<script>// 定义一个全局组件Vue.component("navbar", {props: ["myname"], // 接收myname属性, this.mynametemplate: `<div><button>左</button><span>{{myname}}</span><button>右</button></div>`})let vm = new Vue({el:"#box",data:{}})
</script>

右侧按钮显示与隐藏

通过指令控制右侧按钮显示与隐藏,需使用动态绑定进行传值;

否则绑定的值不是布尔值,而是字符串。

示例如下:

<div id="box"><div style="background-color: yellow">根组件标题</div><navbar myname="首页" :myright="true"></navbar><navbar myname="分类" :myright="false"></navbar>
</div>
<script>// 定义一个全局组件Vue.component("navbar", {props: ["myname", "myright"], // 接收myname属性, this.mynametemplate: `<div><button>左</button><span>{{myname}}</span><button v-show="myright">右</button></div>`})

属性验证

导航组件使用中,需要对组件传递的属性值进行验证。

示例如下:

javascript">Vue.component("navbar", {//props: ["myname", "myright"], // 接收myname属性, this.mynameprops : {myname : String,myright: Boolean}, // 接收myname myright属性, 属性验证template: `<div><button>左</button><span>{{myname}}</span><button v-show="myright">右</button></div>`
})

当传递的属性值,不符合属性设置类型时,控制台会提示错误。

截图如下:

默认属性

还可以设置组件属性的默认属性值。

示例如下:

javascript">props : {myname : {type: String,default: ""},myright: {type: Boolean,default: true}
}, // 接收myname myright属性, 属性验证, 默认属性

父传子示例2

通过Vue全局变量传给组件属性。

示例如下:

<div id="box"><div style="background-color: yellow">根组件标题</div><navbar myname="首页" :myright="false" :myparent="parent"></navbar><navbar myname="分类" :myparent="parent"></navbar>
</div>

Prop中定义接收该值,然后在该组件中应用。

示例如下:

<script>// 定义一个全局组件Vue.component("navbar", {//props: ["myname", "myright"], // 接收myname属性, this.mynameprops : {myname : {type: String,default: ""},myright: {type: Boolean,default: true},myparent: {type:String,default:""}}, // 接收myname myright属性, 属性验证, 默认属性template: `<div><button>左</button><span>{{myname}}--{{myparent}}</span><button v-show="myright">右</button></div>`})let vm = new Vue({el:"#box",data:{parent: "这是一首简单的小情歌"}})
</script>

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 组件通信 - 父传子


http://www.ppmy.cn/embedded/170360.html

相关文章

Kafka零拷贝

Kafka为什么适用零拷贝&#xff0c;其他存储结构不适用&#xff1f; Kafka 采用的是日志存储模型&#xff0c;数据通常是顺序写入、顺序读取&#xff0c;并且它的消费模式是 “读完即走”&#xff08;一次性读取并发送给消费者&#xff09;&#xff0c;这与零拷贝的特性完美匹…

Spring Boot 与 MyBatis 版本兼容性

初接触Spring Boot&#xff0c;本次使用Spring Boot版本为3.4.3&#xff0c;mybatis的起步依赖版本为3.0.0&#xff0c;在启动时报错&#xff0c;报错代码如下 org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name userMapper…

flink集成oracle 19c详解

关键注意事项详解&#xff0c;涵盖配置、性能、兼容性等核心问题&#xff1a; 一、驱动与依赖管理 JDBC 驱动版本选择 必须使用 ojdbc8.jar&#xff08;Oracle 19c 官方推荐与 JDK 8 兼容&#xff09;&#xff0c;避免使用 ojdbc10 或更高版本&#xff08;可能因 Flink 生态兼容…

【每日论文】How far can we go with ImageNet for Text-to-Image generation?

下载PDF或查看论文&#xff0c;请点击&#xff1a;LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 近年来&#xff0c;通过在大规模数据集上训练&#xff0c;文本到图像&#xff08;T2I&#xff09;生成模型已经取得了显著成果&a…

【补充】RustDesk一键部署及账号登录配置

前言 之前分享的配置rustdesk的帖子只是搭建了一个简易服务器&#xff0c;仅能实现简单的远程桌面功能。在后续的使用中切换设备使用时无法看到之前连接的设备&#xff0c;必须知道每个设备的id号&#xff0c;才能在新设备上连接。数据无法在设备间迁移&#xff0c;感觉很麻烦…

物联网感知层常用感应设备

一、环境监测类 温度传感器 ▸ 应用&#xff1a;冷链运输温度监控、智能温室调控 ▸ 技术&#xff1a;热敏电阻、红外测温&#xff08;如TI TMP117&#xff09; 湿度传感器 ▸ 应用&#xff1a;农业大棚湿度控制、工业防潮监测 ▸ 案例&#xff1a;Sensirion SHT4x系列 光照传…

Python测试框架Pytest的参数化

上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不断攀升。 在实际工作中&#xff0c;许多测试用例都是类似的重复&#xff0c;一个个写最后代码会显得很冗余。这里&#xff0c;我们来了解一下pytest.mark.parametrize装饰器&…

一键安装Nginx部署脚本之Linux在线安装Nginx,脚本化自动化执行服务器部署(附执行脚本下载)

相关链接 一键安装Nginx部署脚本之Linux在线安装Nginx一键安装Redis部署脚本之Linux在线安装Redis一键安装Mysql部署脚本之Linux在线安装Mysql一键安装JAVA部署脚本之Linux在线安装JDKXshell客户端免费版无需注册XFtp客户端免费版无需注册 前言 简化服务器部署操作&#xff0…