当前位置: 首页 > news >正文

(7)svelte 教程: Props(属性)

(7)svelte 教程: Props(属性)

什么是 Props

Props(属性) 是组件之间传递数据的一种机制。父组件可以通过 props 向子组件传递数据,子组件通过 export let 声明接收这些数据。在 Svelte 中,props 是组件交流和共享数据的主要方式。

逐行解释代码

我们将逐行解释示例代码,包括每个参数和背后的含义。

App.svelte
<script>import Modal from './Modal.svelte';
</script><Modal message="Hey, I'm a prop value" isPromo={false}/>
<main></main><style>main {text-align: center;padding: 1em;max-width: 240px;margin: 0 auto;}@media (min-width: 640px) {main {max-width: none;}}</style>
  • <script>

    • 该标签用于编写 JavaScript 代码,包含组件的逻辑部分。
  • import Modal from './Modal.svelte';

    • 这行代码从当前目录导入了名为 Modal 的组件。Modal.svelte 是一个独立的 Svelte 组件文件,通过 import 语法将其引入到当前组件中。
  • <Modal message="Hey, I'm a prop value" isPromo={false}/>

    • 这是一个自定义组件的实例,用于在 App.svelte 组件中嵌入和显示 Modal 组件。
    • message="Hey, I'm a prop value":通过 message 属性向 Modal 组件传递字符串 "Hey, I'm a prop value"message 是一个 prop。
    • isPromo={false}:通过 isPromo 属性向 Modal 组件传递布尔值 falseisPromo 是一个 prop,使用大括号 {} 包裹布尔值。
  • <main>

    • HTML <main> 元素,用于包裹应用的主要内容。在这个示例中,<main> 元素是空的,但通常用于包含应用的核心内容。
Modal.svelte
<script>export let message = "default value";let showModal = true;export let isPromo = false;
</script>{#if showModal}<div class="backdrop" class:promo={isPromo}><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>
  • <script>

    • 该标签用于编写 JavaScript 代码,包含组件的逻辑部分。
  • export let message = "default value";

    • 声明并导出一个名为 message 的变量,并将其初始值设置为 "default value"。通过 export 语法,父组件可以传递新的 message 值给这个变量。
  • let showModal = true;

    • 声明一个名为 showModal 的变量,并将其初始值设置为 true。该变量用于控制模态框的显示状态。
  • export let isPromo = false;

    • 声明并导出一个名为 isPromo 的变量,并将其初始值设置为 false。通过 export 语法,父组件可以传递新的 isPromo 值给这个变量。
  • {#if showModal}

    • Svelte 的条件语句块,用于根据 showModal 变量的值动态显示或隐藏内容。当 showModaltrue 时,条件块内的内容将被渲染;当 showModalfalse 时,条件块内的内容将被移除。
  • <div class="backdrop" class:promo={isPromo}>

    • HTML <div> 元素,具有 backdrop 类。
    • class:promo={isPromo}:Svelte 的类绑定语法。当 isPromotrue 时,promo 类将被添加到 <div> 元素中;当 isPromofalse 时,promo 类将被移除。
  • <div class="modal">

    • HTML <div> 元素,具有 modal 类,用于定义模态框的内容区域。
  • <p>{message}</p>

    • HTML <p> 段落元素,使用 {message} 表达式将 message 变量的值插入到段落中。message 的值可以由父组件通过 props 传递进来。
  • {/if}

    • 结束 Svelte 的条件语句块。

代码逻辑和执行过程

  1. App.svelte
  • 引入并实例化 Modal 组件,通过 messageisPromo 属性向 Modal 组件传递数据。
  • 主体部分 <main> 可以包含更多内容和其他组件。
  1. Modal.svelte
  • 声明并导出 messageisPromo 变量,接收父组件传递的值。
  • 使用条件语句 {#if showModal} 判断是否显示模态框内容。
  • 根据 isPromo 的值动态添加或移除 promo 类。
  • 显示 message 的内容。

总结

通过使用 props,父组件 App.svelte 可以向子组件 Modal.svelte 传递数据。子组件通过 export let 声明接收这些数据,并根据传递的数据动态更新其显示内容。这个机制使得组件之间的数据传递和状态管理变得更加简便和高效。

相关文章:

  • 【Linux系统编程】冯诺依曼体系、操作系统、进程的认识
  • 视频汇聚EasyCVR视频监控云平台对接GA/T 1400视图库对象和对象集合XMLSchema描述
  • selenium中, quit 和close的区别
  • 前端作用域冲突之快照沙箱和代理沙箱
  • leetcode:最近的请求次数
  • Vue可视化表单设计 FcDesigner v3.1.0 发布,新增 12 个组件,支持事件配置等
  • Java项目:96 springboot精品在线试题库系统
  • preventDefault()与stopPropagation()有什么区别?
  • IGraph使用实例——线性代数计算(blas)
  • 强达电路营收下滑净利润急剧放缓:周转率骤降,2次因环保被罚
  • 初识SDN(二)
  • 弘君资本:存储芯片概念强势,西测测试三连板,佰维存储涨超10%
  • 【C++】6-6 你好,输出的格式控制(对齐)
  • H6911 DC2.6-40V升压IC 升24V36V48V60V80V100V10A数转模无频闪LED芯片
  • 过滤器、监听器、拦截器的区别
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【347天】每日项目总结系列085(2018.01.18)
  • 345-反转字符串中的元音字母
  • CODING 缺陷管理功能正式开始公测
  • django开发-定时任务的使用
  • JavaScript创建对象的四种方式
  • java第三方包学习之lombok
  • passportjs 源码分析
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Protobuf3语言指南
  • Python语法速览与机器学习开发环境搭建
  • Ruby 2.x 源代码分析:扩展 概述
  • storm drpc实例
  • vue-router的history模式发布配置
  • 关于for循环的简单归纳
  • 后端_ThinkPHP5
  • 人脸识别最新开发经验demo
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用docker-compose进行多节点部署
  • 算法-插入排序
  • 算法---两个栈实现一个队列
  • 算法之不定期更新(一)(2018-04-12)
  • 我的面试准备过程--容器(更新中)
  • Android开发者必备:推荐一款助力开发的开源APP
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云移动端播放器高级功能介绍
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​io --- 处理流的核心工具​
  • ​香农与信息论三大定律
  • #{}和${}的区别是什么 -- java面试
  • #DBA杂记1
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (四)汇编语言——简单程序