React 播客专栏 Vol.5|从“显示”到“消失”:打造你的第一个交互式 Alert 组件!

news2025/5/10 12:00:10

👋 欢迎回到《前端达人 · 播客书单》第 5 期(正文内容为学习笔记摘要,音频内容是详细的解读,方便你理解),请点击下方收听

📌 今天我们不再停留在看代码,而是动手实现一个真正的 React 组件:带关闭功能的 Alert 提示框。如果你已经知道什么是 JSX、Props 和 State,那么今天这期内容将帮助你把这些拼图拼到一起!

🔧 第一步:做一个基本的 Alert 组件

还记得 React 的核心逻辑吗?组件就是一个函数,返回 JSX,就能控制 UI 输出。

function Alert() {
  return (
    <div>
      <div>
        <span role="img" aria-label="Warning">⚠</span>
        <span>Oh no!</span>
      </div>
      <div>Something isn't quite right ...</div>
    </div>
  );
}

💡 提示:

  • JSX 里 class 叫 className。

  • 图标加上 role="img" 和 aria-label,提升无障碍支持。

  • 组件名必须大写!不然 React 会把它当成原生 HTML 标签。

🎨 第二步:加点“定制味道” —— 用 Props 做组件参数化

Alert 不应该只显示“⚠ Oh no!” 吧?我们来让它变得灵活:

export function Alert({ type = "information", heading, children }) {
  return (
    <div>
      <div>
        <span role="img" aria-label={type === "warning" ? "Warning" : "Info"}>
          {type === "warning" ? "⚠" : "ℹ️"}
        </span>
        <span>{heading}</span>
      </div>
      <div>{children}</div>
    </div>
  );
}

👀 使用方式变得很灵活:

<Alert type="information" heading="Success">
  Everything is really good!
</Alert>

✔️ 小技巧:

  • children 就是你写在组件标签之间的内容;

  • typeheadingchildren 都是通过 Props 来配置;

  • 解构 + 默认值写法,让代码更优雅。

🖱️ 第三步:响应用户操作 —— 加个“关闭按钮”

用户想关掉 Alert 怎么办?来,我们加个 closable 属性。

{closable && (
  <button aria-label="Close">
    <span role="img" aria-label="Close">❌</span>
  </button>
)}

这样就能控制这个按钮是否显示了!

在使用时只要这样写:

<Alert type="warning" heading="Oops" closable>
  Something went wrong!
</Alert>

✅ 注意:

  • closable 只要写上就等于 true

  • 条件渲染用 &&,真值就渲染,假值就忽略。

📦 第四步:组件记住“关闭”状态 —— 用 State 控制可见性

让按钮真正“管用”,我们得用上 useState

import { useState } from"react";

exportfunction Alert({ type = "info", heading, children, closable }) {
const [visible, setVisible] = useState(true);

if (!visible) returnnull;

const handleCloseClick = () => setVisible(false);

return (
    <div>
      <div>
        <span>{type === "warning" ? "⚠" : "ℹ️"}</span>
        <span>{heading}</span>
      </div>
      <div>{children}</div>
      {closable && (
        <button onClick={handleCloseClick}>❌</button>
      )}
    </div>
  );
}

🎯 一句话总结:点一下关闭按钮,visible 变成 false,Alert 消失!

📘 第五步:用一用书后小测验题,检验你的理解:

  • React 组件为什么要以大写开头?

  • JSX 中怎么嵌入变量?

  • Props 和 State 的区别是啥?

  • 什么是条件渲染?

如果你都能答出来,那你真的已经掌握了本节核心!

 #React #前端播客 #前端达人 #React播客专栏

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

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

相关文章

解密火星文:LeetCode 269 题详解与 Swift 实现

文章目录 摘要描述题解答案题解代码分析构建图&#xff08;Graph&#xff09;拓扑排序&#xff08;Topological Sort&#xff09; 示例测试及结果时间复杂度空间复杂度实际场景类比总结 摘要 这篇文章我们来聊聊 LeetCode 269 题&#xff1a;火星词典&#xff08;Alien Dictio…

动态规划-62.不同路径-力扣(LeetCode)

一、题目解析 机器人只能向下或向左&#xff0c;要从Start位置到Finish位置。 二、算法原理 1.状态表示 我们要求到Finish位置一共有多少种方法&#xff0c;记Finish为[i,j]&#xff0c;此时dp[i,j]表示&#xff1a;到[i,j]位置时&#xff0c;一共有多少种方法&#xff0c;满…

5月9号.

v-for: v-bind: v-if&v-show: v-model: v-on: Ajax: Axios: async&await: Vue生命周期: Maven: Maven坐标:

从 Git 到 GitHub - 使用 Git 进行版本控制 - Git 常用命令

希望本贴能从零开始带您一起学习如何使用 Git 进行版本控制&#xff0c;并结合远程仓库 GitHub。这会是一个循序渐进的指南&#xff0c;我们开始吧&#xff01; 学习 Git 和 GitHub 的路线图&#xff1a; 理解核心概念&#xff1a;什么是版本控制&#xff1f;Git 是什么&…

双指针算法详解(含力扣和蓝桥杯例题)

目录 一、双指针算法核心概念 二、常用的双指针类型&#xff1a; 2.1 对撞指针 例题1&#xff1a;盛最多水的容器 例题2&#xff1a;神奇的数组 2.2 快慢指针&#xff1a; 例题1&#xff1a;移动零 例题2&#xff1a;美丽的区间&#xff08;蓝桥OJ1372&#xff09; 3.总…

【网络编程】二、UDP网络套接字编程详解

文章目录 前言Ⅰ. UDP服务端一、服务器创建流程二、创建套接字 -- socketsocket 属于什么类型的接口❓❓❓socket 是被谁调用的❓❓❓socket 底层做了什么❓❓❓和其函数返回值有没有什么关系❓❓❓ 三、绑定对应端口号、IP地址到套接字 -- bind四、数据的发送和接收 -- sendto…

【应急响应】- 日志流量如何分析?

【应急响应】- 日志流量如何下手&#xff1f;https://mp.weixin.qq.com/s/dKl8ZLZ0wjuqUezKo4eUSQ

djinn: 3靶场渗透

djinn: 3 来自 <https://www.vulnhub.com/entry/djinn-3,492/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.243 3&#xff0…

VS Code配置指南:打造高效的QMK开发环境

VS Code配置指南&#xff1a;打造高效的QMK开发环境 前言 你是否曾为QMK固件开发环境的搭建而头疼不已&#xff1f;本文将手把手教你使用Visual Studio Code&#xff08;简称VS Code&#xff09;这款强大的代码编辑器来构建一个完美的QMK开发环境&#xff0c;让你的键盘固件开…

服务器多客户端连接核心要点(1)

刷题 服务器多客户端连接核心要点 多进程服务器 实现原理 fork子进程&#xff1a;每次accept新客户端后&#xff0c;调用fork创建子进程。独立处理&#xff1a;子进程负责与客户端通信&#xff08;如read/write&#xff09;&#xff0c;父进程继续监听新连接。 特点 隔离性…

Stagehand:AI驱动的下一代浏览器自动化框架

Stagehand 是一个结合了 AI 代理、AI 工具和 Playwright 的浏览器自动化框架。核心理念是&#xff1a;让自动化任务既可控又智能。与传统工具不同&#xff0c;Stagehand 不仅仅依赖 AI 代理的“黑箱操作”&#xff0c;而是通过与 Playwright 的深度结合&#xff0c;赋予开发者对…

爱普生FA-238在车身控制模块中的应用

在汽车智能化、电子化飞速发展的当下&#xff0c;车身控制模块&#xff08;BCM&#xff09;作为车辆的 “智能管家”&#xff0c;肩负着协调和控制众多车身功能的重任&#xff0c;从车门的解锁与锁定、车窗的升降&#xff0c;到车灯的智能点亮与熄灭&#xff0c;再到雨刮器的自…

【A2A】管中窥豹,google源码python-demo介绍

前言 A2A&#xff08;Agent2Agent&#xff09;是 Google 推出的一项新协议&#xff0c;旨在解决多智能体&#xff08;Multi-Agent&#xff09;系统中跨平台、跨组织协作的难题。它为 AI 代理之间的通信、协作和任务分工提供了一个统一的标准&#xff0c;可以类比为网页世界的 H…

004-nlohmann/json 快速认识-C++开源库108杰

了解 nlohmann/json 的特点&#xff1b;理解编程中 “数据战场”划分的概念&#xff1b;迅速上手多种方式构建一个JSON对象&#xff1b; 1 特点与安装 nlohmann/json 是一个在 github 长期霸占 “JSON” 热搜版第1的CJSON处理库。它的最大优点是与 C 标准库的容器数据&#xf…

Matlab实现CNN-BiLSTM时间序列预测未来

Matlab实现CNN-BiLSTM时间序列预测未来 目录 Matlab实现CNN-BiLSTM时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-BiLSTM时间序列预测未来&#xff1b; 2.运行环境Matlab2023b及以上&#xff0c;data为数据集&#xff0c;单变量时间序…

C语言| sizeof(array)占多少字节

C语言| 数组名作为函数参数 sizeof(数组名); 可以求出整个数组在内存中所占的字节数。 被调函数Array_Sum()中&#xff0c;数组array使用sizeof会得到多少&#xff1f; 实参数组a占32字节&#xff0c;实参a传给形参array&#xff0c;只占4字节。 原因如下&#xff1a; 数组名做…

【文件系统—散列结构文件】

文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术&#xff0c;掌握linux与文件有关的系统调用命令&#xff0c;并在此基础上建立面向随机检索的散列结构文件&#xff1b;## 二、实验内容与设计思想 实验内容 1.设…

World of Warcraft [CLASSIC][80][Deluyia] [Fragment of Val‘anyr]

瓦兰奈尔的碎片 [Fragment of Valanyr] 有时候下个班打个游戏&#xff0c;没想到套路也这么多&#xff0c;唉&#xff0c;何况现实生活&#xff0c;这一个片版本末期才1000G&#xff0c;30个&#xff0c;也就30000G&#xff0c;时光徽章等同月卡15000G&#xff0c;折合一下也就…

数组和指针典型例题合集(一维数组、字符数组、二维数组)

1.一维数组 数组名的理解 数组名是数组首元素&#xff08;第一个元素&#xff09;的地址 但是有两个例外&#xff1a; 1.sizeof &#xff08;数组名&#xff09;—— 数组名表示整个数组&#xff0c;就算的是整个数组的大小&#xff0c;单位是字节。 2.&数组名 —— 数…

地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据

地级市-机器人、人工智能等未来产业水平&#xff08;2009-2023年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90623814 https://download.csdn.net/download/paofuluolijiang/90623814 此数据集统计了2009-2023年全国地级市在机器人、人工智能等…