(8)svelte 教程: Event Forwarding

(8)svelte 教程: Event Forwarding

什么是 Event Forwarding

Event Forwarding 是 Svelte 框架中的一个概念,指的是将一个组件的事件(如点击、鼠标悬停等)转发给其父组件。这样,父组件可以监听和处理子组件中的事件。通过这种方式,可以减少代码的重复和复杂度,同时提高组件的可复用性和模块化程度。

逐行解释代码

App.svelte
<script>import Modal from './Modal.svelte';let showModal = false;let toggleModal = () => {showModal = !showModal;};
</script>
  • import Modal from './Modal.svelte';

    • 从当前目录中导入名为 Modal 的 Svelte 组件。
  • let showModal = false;

    • 声明一个名为 showModal 的变量,初始值为 false。这个变量用来控制 Modal 组件的显示与隐藏。
  • let toggleModal = () => { showModal = !showModal; };

    • 声明一个名为 toggleModal 的箭头函数。该函数的作用是将 showModal 的值在 truefalse 之间切换(即点击一次切换显示状态)。
<Modal message='Hello, Ninjas!' {showModal} on:click={toggleModal} />
<main><button on:click={toggleModal}>Open Modal</button>
</main>
  • <Modal message='Hello, Ninjas!' {showModal} on:click={toggleModal} />

    • 使用 Modal 组件,并传递三个属性:
      • message='Hello, Ninjas!':向 Modal 组件传递一个名为 message 的字符串属性,值为 ‘Hello, Ninjas!’。
      • {showModal}:传递 showModal 变量的当前值给 Modal 组件,使其能根据该值决定是否显示。
      • on:click={toggleModal}:监听 Modal 组件的 click 事件,当该事件触发时,调用 toggleModal 函数。
  • <main><button on:click={toggleModal}>Open Modal</button>

    • 创建一个 main 元素,并在其内部创建一个按钮。
    • on:click={toggleModal}:为按钮绑定 click 事件,当按钮被点击时,调用 toggleModal 函数,切换 showModal 的值,从而控制 Modal 的显示与隐藏。
Modal.svelte
<script>export let showModal = false;export let isPromo = false;export let message = 'default message';
</script>
  • export let showModal = false;

    • 声明并导出一个名为 showModal 的变量,初始值为 false。这个变量由外部(父组件)传入,用来控制 Modal 组件的显示与隐藏。
  • export let isPromo = false;

    • 声明并导出一个名为 isPromo 的变量,初始值为 false。这个变量用来控制 Modal 组件是否具有 promo 样式。
  • export let message = 'default message';

    • 声明并导出一个名为 message 的变量,初始值为 ‘default message’。这个变量用来显示传入的消息内容。
{#if showModal}<!-- svelte-ignore a11y-click-events-have-key-events --><div class="backdrop" class:promo={isPromo} on:click><div class="modal"><p>{message}</p></div></div>
{/if}
  • {#if showModal}

    • Svelte 的条件渲染语句,如果 showModaltrue,则渲染内部的内容。
  • <!-- svelte-ignore a11y-click-events-have-key-events -->

    • Svelte 的注释,忽略关于 a11y-click-events-have-key-events 的可访问性警告。
  • <div class="backdrop" class:promo={isPromo} on:click>

    • 创建一个 div 元素,类名为 backdrop,并根据 isPromo 的值动态添加 promo 类。
    • on:click:为 div 绑定 click 事件。
  • <div class="modal">

    • 创建一个类名为 modaldiv 元素,用于显示模态框的内容。
  • <p>{message}</p>

    • 创建一个 p 元素,内容为 message 变量的值。

以上代码实现了一个简单的模态框组件,通过事件转发机制,父组件可以控制子组件的显示与隐藏,并处理子组件的点击事件。

App.svelte 完整代码


<script>import Modal from './Modal.svelte';let showModal = false;let toggleModal = () => {showModal = !showModal;};</script><Modal message='Hello, Ninjas!' {showModal} on:click={toggleModal} /><main><button on:click={toggleModal}>Open Modal</button></main><style>main {text-align: center;padding: 1em;max-width: 240px;margin: 0 auto;}@media (min-width: 640px) {main {max-width: none;}}</style>

Modal.svelte 完整代码

<script>export let showModal = false;export let isPromo = false;export let message = 'default message';</script>{#if showModal}<!-- svelte-ignore a11y-click-events-have-key-events --><div class="backdrop" class:promo={isPromo} on:click><div class="modal"><p>{message}</p></div></div>{/if}<style>.backdrop{width: 100%;height: 100%;position: fixed;background: rgba(0,0,0,0.8);}.modal{padding: 10px;border-radius: 10px;max-width: 400px;margin: 10% auto;;text-align: center;background: white;}.promo .modal{background: crimson;color: white;}</style>

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

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

相关文章

JAVA流程控制--增强for循环

1.JAVA5引入了一种主要用于数组或集合的增强型for循环 2.JAVA增强for循环语法格式如下&#xff1a; for(声明语句&#xff1a;表达式&#xff09; { //代码句子 } 3.声明语句&#xff1a;声明新的局部变量&#xff0c;该变量的类型必须和数组元素的类型匹配。其作用域限定在循…

常见的多态面试题

多态的概念及其构成条件 多态概念&#xff1a;对不同的对象会有不同的实现方法&#xff0c;即为多种形态。 构成条件&#xff1a; 派生类要进行虚函数的重写&#xff08;父子类虚函数需要三同&#xff0c;三同指函数名、参数、返回值&#xff09;要用父类的指针或引用去调用虚…

Spring Boot自动配置原理和应用

我们知道&#xff0c;基于Spring Boot&#xff0c;我们只需要在类路径中引入一组第三方框架的starter组件&#xff0c;就能在Spring容器中使用这些框架所提供的各项功能。这在当下的开发过程中已经习以为常&#xff0c;但在Spring Boot还没有诞生之前却是不可想象的。如果我们使…

在电脑里养一只小猫,工作越忙它跑的越快

在电脑里养一只小猫&#xff0c;工作越忙它跑的越快 话说每个程序员都会比较关注自己电脑的运行状况吧&#xff1f;我也是这样&#xff0c;无论是编译代码还是浏览网页&#xff0c;都会实时监测 CPU 占用情况&#xff0c;看看有没有奇怪的进程占用过多的 CPU&#xff0c;影响我…

Monaco Editor系列(六)Range详解、Uri 自动匹配语言模型、缩略图 miniMap 配置

前情回顾&#xff1a; 一鼓作气&#xff0c;再鼓&#xff0c;再鼓&#xff01;&#xff01;哈哈哈。争取早日占领 Monaco 领地。 上一篇文章讲到的三个功能分别是 Position 类型、设置 markers、指定位置插入或替换内容 涉及到的知识点&#xff1a; ⛈️ 获取光标位置&#x…

从MLP到卷积

1.从MLP到卷积层 最近要做多通道的实验&#xff0c;所以重新将处理图像的基础模型回顾一下&#xff0c;什么是卷积&#xff1f;卷积本质是是一种特殊的全连接层。 1.1怎么w的权重从一个值变成了4维呢?可以这样理解&#xff0c;在此举一个例子&#xff1a; 其实本质可以看成&…

签名安全规范:解决【请求对象json序列化时,时间字段被强制转换成时间戳的问题】

文章目录 引言I 签名安全规范1.1 签名生成的通用步骤1.2 签名运算(加密规则)1.3 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)1.4 允许的请求头字段1.5 签名校验工具II 注解校验签名2.1 获取请求数据,并校验签名数据2.2 解决时间格式被强制转换成时间戳的问题…

6.5 比赛设备独家揭秘 | 2024高通边缘智能创新应用大赛公开课

2024高通边缘智能创新应用大赛系列公开课热度不减&#xff0c;第三期即将火爆开启&#xff0c;广翼智联FV01边缘智能物联网开发板迎来赛程期间首次公开亮相&#xff01; 在这期的直播中&#xff0c;广翼智联高级产品市场经理伍理化将亲自担任主讲&#xff0c;为大家一一揭晓这…

探索大模型技术及其前沿应用——TextIn文档解析技术

前言 中国图象图形大会&#xff08;CCIG 2024&#xff09;于近期在西安召开&#xff0c;此次大会将面向开放创新、交叉融合的发展趋势&#xff0c;为图像图形相关领域的专家学者和产业界同仁&#xff0c;搭建一个展示创新成果、展望未来发展&#xff0c;集高度、深度、广度三位…

37、Flink 的 WindowAssigner之会话窗口示例

1、处理时间 无需设置水位线和时间间隔。 input.keyBy(e -> e).window(ProcessingTimeSessionWindows.withGap(Time.minutes(10))).apply(new WindowFunction<String, String, String, TimeWindow>() {Overridepublic void apply(String s, TimeWindow timeWindow, I…

探索气象数据的多维度三维可视化:PM2.5、风速与高度分析

探索气象数据的多维度可视化&#xff1a;PM2.5、风速与高度分析 摘要 在现代气象学中&#xff0c;数据可视化是理解复杂气象模式和趋势的关键工具。本文将介绍一种先进的数据可视化技术&#xff0c;它能够将PM2.5浓度、风速和高度等多维度数据以直观和动态的方式展现出来。 …

ChatTTS 如何安装可视化操作

可视化一键安装下载地址&#xff1a; 百度网盘 Download from GitHub 从 GitHub 下载代码。 git clone https://github.com/2noise/ChatTTS 下载地址 Install Dependencies 在开始之前&#xff0c;请确保已安装必要的软件包。如果您尚未安装它们&#xff0c;可以使用 pip …

Android百度人脸识别3.0配置

JDK 必须是16的版本 如果报错的错误是"opens java.io" org.gradle.jvmargs -Xmx2048M -Dkotlin.daemon.jvm.options\"-Xmx2048M" --add-exportsjava.base/sun.nio.chALL-UNNAMED --add-opensjava.base/java.langALL-UNNAMED --add-opensjava.base/java.…

智能售货机投资指南:从成本预算到市场策略的全方位解析

现代化智能设施的典范&#xff0c;智能售货机以其丰富的商品选项与无缝购物体验著称。然而&#xff0c;涉足此领域前&#xff0c;一番周密的投资考量不可或缺。 首要因素聚焦于售货机本身的购置费用&#xff0c;该费用弹性颇大&#xff0c;依据型号与功能差异而定。基础的小型…

Linux 36.3 + JetPack v6.0@jetson-inference之语义分割

Linux 36.3 JetPack v6.0jetson-inference之语义分割 1. 源由2. segNet2.1 命令选项2.2 下载模型2.2.1 Cityscapes2.2.2 DeepScene2.2.3 MHP2.2.4 VOC2.2.5 SUN 2.3 操作示例2.3.1 单张照片2.3.2 多张照片2.3.3 视频 3. 代码3.1 Python3.2 C 4. 参考资料 1. 源由 分类和目标识…

Docker面试整理-Docker的核心组件是什么?

Docker 的核心组件构成了它的基本架构,使其能够高效地进行容器化部署和管理。这些组件协同工作,为开发者和系统管理员提供了一个强大的工具集,用于构建、分发和运行容器。主要的核心组件包括: Docker 客户端和服务器(Docker Engine):Docker 客户端(Client)允许用户通过…

【Unity】使用Jenkins实现远程Unity打包

前言 很多时候&#xff0c;我们需要自动打包&#xff0c;比如下班了&#xff0c;我要出一个包明天早上用。比如每天夜里12点&#xff0c;我需要定时出一个稳定包。 这个时候就需要Jenkins了。 1.安装环境 安装 jenkins 之前&#xff0c;需要安装Java 。Java下载网站 ①下载…

揭秘大数据时代的数据库存储引擎:关系型、NoSQL与NewSQL如何选择?

文章目录 01 关系型数据库&NoSQL数据库&NewSQL数据库1. 关系型数据库2. NoSQL数据库3. NewSQL数据库 02 OLTP&OLAP&HTAP对比1. OLTP数据库2. OLAP数据库3. HTAP数据库 03 总结 在大数据和AI时代&#xff0c;数据库成为各类应用不可或缺的重要组成部分。而数据库…

数据湖构建基础:高效数据提取与存储策略

随着大数据技术的快速发展&#xff0c;企业对于数据处理和分析的需求日益增加。数据湖作为一种集中式存储和处理大规模数据的架构&#xff0c;已经成为企业处理非结构化和半结构化数据的重要工具。然而&#xff0c;构建一个高效、稳定的数据湖并非易事&#xff0c;其中高效的数…

JDK参数设置中文版

java最新JDK参数设置 行为选项Garbage First&#xff08;G1&#xff09;垃圾收集选项性能选项调试选项 行为选项 选项默认值描述-XX:-AllowUserSignalHandlers未设置如果应用程序安装了信号处理程序&#xff0c;不要抱怨。&#xff08;仅适用于 Solaris 和 Linux。&#xff09…