”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 每个 UI 开发人员都应该知道的 React OneLines

每个 UI 开发人员都应该知道的 React OneLines

发布于2024-11-04
浏览:705

React One-Liners Every UI Developer Should Know

简介:简洁 React 代码的力量

嘿,UI 开发人员朋友们!你准备好升级你的 React 游戏了吗?今天,我们将深入探讨 React 的世界——那些漂亮、紧凑的代码片段,可以让你的生活变得更加轻松。无论您是 React 新手还是经验丰富的专业人士,这些俏皮话都一定能为您的工具包增添一些额外的活力。

React JS 已成为构建用户界面的首选库,这是有充分理由的。它灵活、高效,让我们可以创造一些非常棒的东西。但有时,我们发现自己编写了不必要的代码。这就是这些俏皮话派上用场的地方。它们就像 React 世界的瑞士军刀 - 小,但非常强大!

所以,拿起你最喜欢的饮料,放松一下,让我们探索 10 个 React 俏皮话,它们会让你更聪明地编码,而不是更困难。准备好?让我们直接进入吧!

1. 条件渲染快捷方式

让我们从一个经典的 React 场景开始:条件渲染。您知道,当您只想在满足特定条件时才显示某些内容。传统上,您可以使用 if 语句或三元运算符。但看看这个:

{condition && }

这个小宝石使用逻辑 AND 运算符 (&&) 仅当条件为真时才渲染组件。它简单、干净,可以毫不费力地完成工作。

它是如何运作的

这段话的美妙之处在于 JavaScript 如何计算逻辑表达式。如果 && 之前的条件为 false,则整个表达式为 false,并且 React 不会渲染任何内容。但如果这是真的,React 会继续评估 && 之后的内容,在本例中是我们的组件。

何时使用它

当您遇到简单的是或否的情况时,此技术非常适合。也许您只想为登录用户显示欢迎消息,或者仅在特定时间内显示特别优惠。无论如何,这句话已经让你满意了。

2. 默认道具快捷键

接下来,我们来谈谈默认道具。我们都知道处理 props 可能无法传递给组件的情况是多么重要。通常的方法是设置 defaultProps 或在函数签名中使用默认参数。但这是一个巧妙的俏皮话,可以解决这个问题:

const {prop = defaultValue} = props;

该行使用具有默认值的解构赋值。如果 props 中未定义 prop,它将回退到 defaultValue。

为什么它很棒

这种方法非常干净,并且发生在函数体内。当您处理多个 props 并且不想弄乱函数签名或添加单独的 defaultProps 对象时,它特别方便。

现实世界的例子

假设您正在构建一个可以具有不同大小的 Button 组件。你可以这样使用它:

const Button = ({ size = 'medium', children }) => {
  return ;
};

现在,如果有人使用您的按钮而不指定尺寸,它将默认为“中”。很整洁吧?

3. 状态更新快捷方式

状态管理是React开发的重要组成部分,有时我们需要根据状态之前的值来更新状态。这是一个让这变得轻而易举的一句话:

setCount(prevCount => prevCount   1);

这使用状态设置器的函数形式,它接收先前的状态作为参数。

背后的魔力

此方法可确保您始终使用最新的状态值,这在状态更新可能批量或延迟的情况下至关重要。

何时实现这一目标

每当您需要根据先前的值更新状态时,请使用此选项。它在计数器、切换布尔值或新状态依赖于旧状态的任何情况下特别有用。

4. 数组操作快捷键

在 React 中使用数组是一项常见任务,尤其是在处理项目列表时。这是一个单行代码,可以帮助您将一项添加到处于状态的数组中,而无需更改原始项:

setItems(prevItems => [...prevItems, newItem]);

这使用扩展运算符创建一个新数组,其中包含所有先前的项目,并在末尾加上新的项目。

为什么它很重要

在 React 中,不变性是性能和可预测性的关键。这一行确保您创建一个新数组而不是修改现有数组,这正是 React 想要的。

实际应用

假设您正在构建一个待办事项列表应用程序。当用户添加新任务时,您可以使用此行来更新您的状态:

const addTask = (newTask) => {
  setTasks(prevTasks => [...prevTasks, newTask]);
};

简单、干净、有效!

5. 对象更新快捷方式

与数组类似,更新状态中的对象是React中的常见操作。这是一个单行代码,可让您更新对象的特定属性而不改变原始对象:

setUser(prevUser => ({ ...prevUser, name: 'New Name' }));

这使用扩展运算符创建一个具有前一个用户的所有属性的新对象,但用新值覆盖“name”属性。

它的美丽

这种方法保持不变性,同时允许您仅更新您需要的属性。这就像说,“除了这些特定的更改之外,保持一切不变。”

当你会喜欢这个

当您处理表单或任何需要根据用户输入或其他事件更新对象的一部分的场景时,这一行话就会大放异彩。

6. Ref 回调快捷键

React 中的 Refs 对于直接访问 DOM 元素非常有用。这是设置 ref 回调的一行:

 node && node.focus()} />

这将创建一个在渲染时自动聚焦的输入元素。

它是如何运作的

ref 回调接收 DOM 节点作为参数。此单行代码检查节点是否存在(以避免 ref 为 null 时出现错误),然后调用其焦点方法。

完美的用例

此技术非常适合创建可访问的表单,您希望在表单加载时自动关注第一个输入字段。

7. 风格快捷方式

React 中的内联样式有时可能有点冗长。下面是一行字,可以使它们更加简洁:

这使用对象文字在一行中定义多种样式。

为什么它很酷

虽然我们通常更喜欢 CSS 类来进行样式设置,但有时内联样式是必要或方便的。这一行让你的 JSX 保持干净和可读。

何时使用它

这对于根据 props 或状态更改的动态样式特别有用,或者当您不想设置单独的 CSS 文件时用于快速原型设计。

8. 类名快捷方式

条件类名是 React 中的常见模式。这是使这一过程顺利进行的一句台词:

这使用模板文字和三元运算符有条件地添加类。

聪明的一点

三元中的空字符串确保当条件为 false 时不会添加额外的空格,从而保持类名干净。

真实场景

这非常适合导航菜单中的活动状态或根据用户交互切换视觉状态。

9. 错误边界捷径

错误边界是健壮的 React 应用程序的重要组成部分。这是一个创建简单错误边界的单行代码:

class ErrorBoundary extends React.Component { state = { hasError: false }; static getDerivedStateFromError = () => ({ hasError: true }); render = () => this.state.hasError ? 

Something went wrong.

: this.props.children; }

虽然这在技术上是一行中的多个语句,但它以非常简洁的方式创建了完整的错误边界组件。

分解它

这一行定义了一个类组件,该组件具有用于跟踪错误的状态、一个用于在发生错误时更新状态的静态方法,以及一个显示错误消息或正常渲染子级的渲染方法。

当它派上用场时

将其包含在您想要优雅地捕获和处理错误的应用程序的任何部分,以防止整个应用程序崩溃。

10. 备忘录快捷方式

最后但并非最不重要的一点是,让我们看一下用于记忆功能组件的一行:

const MemoizedComponent = React.memo(({ prop1, prop2 }) => 
{prop1} {prop2}
);

这将创建一个功能组件的记忆版本,只有在其 props 发生变化时才会重新渲染。

神奇的触感

React.memo 是一个高阶组件,当 props 相同时,它会跳过渲染,这对于经常使用相同 props 渲染的组件来说可以大大提高性能。

最适合用于

这对于渲染成本昂贵或位于组件树深处并经常接收相同道具的纯功能组件来说非常有用。

结论:拥抱 React One-Liners 的力量

好了,伙计们!十个强大的 React 行话可以让你的代码更干净、更高效,而且我敢说,写起来更有趣。从条件渲染到错误边界,这些紧凑的片段具有真正的冲击力。

请记住,虽然这些俏皮话很棒,但它们并不总是适合每种情况的最佳解决方案。关键是要了解它们如何工作以及何时使用它们。与编码中的所有事情一样,可读性和可维护性应该始终是您的首要任务。

所以,下次当你深入 React 项目时,请尝试一下这些俏皮话。它们可能会节省您一些时间并使您的代码更加优雅。谁知道呢?您甚至可能会用新发现的 React 魔法给其他开发人员留下深刻的印象。

继续探索,继续学习,最重要的是,继续享受 React 的乐趣!毕竟,这就是我们 UI 开发人员的动力,对吧?祝大家编码愉快!

要点:

  • 单行代码可以显着减少 React 代码中的样板代码。
  • 理解这些模式可以让你成为更高效的 React 开发人员。
  • 使用单行代码时始终考虑可读性和可维护性。
  • 在您的项目中试验这些片段,看看它们最适合的位置。
  • 请记住,目标不仅仅是更短的代码,而是更清晰、更具表现力的代码。

那么,你最喜欢的 React 一句台词是什么?你还有其他可以发誓的人吗?与其他开发人员分享并保持对话。我们可以共同突破 React 的可能性,并创建更令人惊叹的用户界面。下次再见,快乐 React!

版本声明 本文转载于:https://dev.to/nnnirajn/10-react-one-liners-every-ui-developer-should-know-c97?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-17
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-17
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-17
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-17
  • Numpy 备忘单
    Numpy 备忘单
    Comprehensive Guide to NumPy: The Ultimate Cheat Sheet NumPy (Numerical Python) is a fundamental library for scientific computing in Python. ...
    编程 发布于2024-11-17
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-17
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-17
  • 你需要像专业人士一样阅读科技文章
    你需要像专业人士一样阅读科技文章
    在快节奏的技术世界中,并非您阅读的所有内容都是准确或公正的。并非您读到的所有内容都是由人类编写的! 细节可能存在微妙的错误,或者文章可能故意误导。让我们来看看一些可以帮助您阅读科技文章或任何媒体内容的技能。 1. 培养健康的怀疑态度 培养健康的怀疑态度至关重要。质疑大胆的主张,寻找...
    编程 发布于2024-11-17
  • 如何查找一个多维数组中存在但另一个多维数组中不存在的行?
    如何查找一个多维数组中存在但另一个多维数组中不存在的行?
    比较多维数组的关联行您有两个多维数组,$pageids 和 $parentpage,其中每行代表一个包含列的记录“id”、“链接标签”和“url”。您想要查找 $pageids 中存在但不在 $parentpage 中的行,从而有效地创建一个包含缺失行的数组 ($pageWithNoChildren...
    编程 发布于2024-11-17
  • 为什么 Windows 中会出现“Java 无法识别”错误以及如何修复它?
    为什么 Windows 中会出现“Java 无法识别”错误以及如何修复它?
    解决 Windows 中的“Java 无法识别”错误尝试在 Windows 7 上检查 Java 版本时,用户可能会遇到错误“'Java' 无法识别”作为内部或外部命令。”此问题通常是由于缺少 Java 安装或环境变量不正确而引起的。要解决此问题,您需要验证 Java 安装并配置必要...
    编程 发布于2024-11-17
  • 尽管文件存在且有权限,为什么 File.delete() 返回 False?
    尽管文件存在且有权限,为什么 File.delete() 返回 False?
    尽管存在并进行权限检查,File.delete() 返回 False使用 FileOutputStream 写入文件后尝试删除文件时,某些用户遇到意外问题: file.delete() 返回 false。尽管文件存在且所有权限检查(.exists()、.canRead()、.canWrite()、....
    编程 发布于2024-11-17
  • 如何有效地从 Go 中的切片中删除重复的对等点?
    如何有效地从 Go 中的切片中删除重复的对等点?
    从切片中删除重复项给定一个文本文件,其中包含表示为具有“Address”和“PeerID”的对象的对等点列表属性,任务是根据代码配置中“Bootstrap”切片中匹配的“Address”和“PeerID”删除所有重复的对等点。为了实现此目的,我们迭代切片中的每个对等点对象多次。在每次迭代期间,我们将...
    编程 发布于2024-11-17
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1和$array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求是构...
    编程 发布于2024-11-17
  • 如何自定义Bootstrap 4的文件输入组件?
    如何自定义Bootstrap 4的文件输入组件?
    绕过 Bootstrap 4 文件输入的限制Bootstrap 4 提供了自定义文件输入组件来简化用户的文件选择。但是,如果您希望自定义“选择文件...”占位符文本或显示所选文件的名称,您可能会遇到一些挑战。更改 Bootstrap 4.1 及更高版本中的占位符自 Bootstrap 4.1 起,占...
    编程 发布于2024-11-17
  • 如何在 CSS 盒子上创建斜角?
    如何在 CSS 盒子上创建斜角?
    在 CSS 框上创建斜角可以使用多种方法在 CSS 框上实现斜角。一种方法描述如下:使用边框的方法此技术依赖于沿容器左侧创建透明边框和沿底部创建倾斜边框。以下代码演示了如何实现:<div class="cornered"></div> <div cl...
    编程 发布于2024-11-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3