」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 每個 UI 開發人員都應該知道的 React OneLines

每個 UI 開發人員都應該知道的 React OneLines

發佈於2024-11-04
瀏覽:891

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]刪除
最新教學 更多>
  • 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 ...
    程式設計 發佈於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
  • 你需要像專業人士一樣閱讀科技文章
    你需要像專業人士一樣閱讀科技文章
    在快节奏的技术世界中,并非您阅读的所有内容都是准确或公正的。并非您读到的所有内容都是由人类编写的! 细节可能存在微妙的错误,或者文章可能故意误导。让我们来看看一些可以帮助您阅读科技文章或任何媒体内容的技能。 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()、.ca...
    程式設計 發佈於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
  • 如何在 Pandas DataFrame 中的字串中新增前導零?
    如何在 Pandas DataFrame 中的字串中新增前導零?
    在 Pandas Dataframe 中的字串中加入前導零在 Pandas 中,處理字串有時需要修改其格式。一項常見任務是向資料幀中的字串新增前導零。這在處理需要轉換為字串格式的數值資料(例如 ID 或日期)時特別有用。 要實現此目的,您可以利用 Pandas Series 的 str 屬性。此屬性...
    程式設計 發佈於2024-11-17
  • 您是否應該異步加載腳本以提高網站效能?
    您是否應該異步加載腳本以提高網站效能?
    非同步腳本載入以提高網站效能在現今的Web 開發領域,優化頁面載入速度對於使用者體驗和搜尋引擎優化至關重要。提高效能的有效技術之一是非同步載入腳本,使瀏覽器能夠與其他頁面元素並行下載腳本。 傳統方法是將腳本標籤直接放置在 HTML 文件中,但這種方法常常會造成瓶頸因為瀏覽器必須等待每個腳本完成載入才...
    程式設計 發佈於2024-11-17
  • 如何將 Python 日期時間物件轉換為自紀元以來的毫秒數?
    如何將 Python 日期時間物件轉換為自紀元以來的毫秒數?
    在Python 中將日期時間物件轉換為自紀元以來的毫秒數Python 的datetime 物件提供了一種穩健的方式來表示日期和時間。但是,某些情況可能需要將 datetime 物件轉換為自 UNIX 紀元以來的毫秒數,表示自 1970 年 1 月 1 日協調世界時 (UTC) 午夜以來經過的毫秒數。...
    程式設計 發佈於2024-11-17

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3