」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > React 風格的元件

React 風格的元件

發佈於2024-07-30
瀏覽:878

React Styled Components

什麼是樣式組件?

Styled Components 是一個流行的 React 函式庫,允許開發人員直接在 JavaScript 程式碼中編寫 CSS。該庫利用標記的模板文字來設計元件的樣式。它促進了元件級樣式的使用,有助於將樣式和元素結構的關注點分開,並使整體程式碼更易於維護。

使用樣式化組件的好處

1。動態樣式: 樣式化元件可讓您使用 JavaScript 根據 props、state 或任何其他變數動態設定樣式。

2.更好的組織: 讓樣式靠近它們影響的元件可以使您的程式碼更加模組化且更易於管理。

3.沒有類別名稱錯誤: 由於樣式的範圍僅限於元件,因此您不必擔心類別名稱衝突或傳統 CSS 中常見的特殊性問題。

4。主題支援: 樣式化元件提供內建的主題支持,讓您可以輕鬆地在應用程式中應用一致的樣式。

安裝樣式組件

要開始使用Styled Components,您需要透過npm或yarn安裝它:

npm install styled-components

or

yarn add styled-components

基本用法

這裡有一個基本範例來說明樣式化元件的工作原理:

import styled from "styled-components";

// Styled component named StyledButton
const StyledButton = styled.button`
  background-color: black;
  font-size: 32px;
  color: white;
`;

function Component() {
  // Use it like any other component.
  return  Login ;
}

依道具進行調整

樣式化元件具有功能性,因此我們可以輕鬆地動態設定元素樣式。

import styled from "styled-components";

const StyledButton = styled.button`
  min-width: 200px;
  border: none;
  font-size: 18px;
  padding: 7px 10px;
  /* The resulting background color will be based on the bg props. */
  background-color: ${props => props.bg === "black" ? "black" : "blue";
`;

function Profile() {
  return (
    
Button A Button B
) }

主題化

樣式化元件還支援主題,可讓您定義一組樣式(如顏色、字體等)並在整個應用程式中一致地應用它們。

首先,定義主題:

import { ThemeProvider } from 'styled-components';

const theme = {
  primary: 'blue',
  secondary: 'gray',
};

然後,用 ThemeProvider 包裝您的應用程式並傳遞您的主題:

const App = () => (
  
    
);

最後,存取樣式元件中的主題屬性:

const Button = styled.button`
  background: ${(props) => (props.primary ? props.theme.primary : props.theme.secondary)};
  color: white;
  font-size: 1em;
  margin: 1em;
  padding: 0.25em 1em;
  border: 2px solid ${(props) => props.theme.primary};
  border-radius: 3px;
`;

結論

Styled Components 對於希望提高應用程式的可維護性和可擴展性的 React 開發人員來說是一個強大的工具。透過將樣式封裝在元件中並充分利用 JavaScript 的強大功能,Styled Components 提供了一種現代且高效的 Web 應用程式樣式設計方法。無論您是在處理小型專案還是大型應用程序,樣式化組件都可以幫助您保持樣式井井有條和程式碼整潔。

版本聲明 本文轉載於:https://dev.to/shriyaexe/react-styled-components-34eg?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決「一般錯誤:2006 MySQL 伺服器已消失」介紹:將資料插入MySQL 資料庫有時會導致錯誤「一般錯誤:2006 MySQL 伺服器已消失」。當與伺服器的連線遺失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變數之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2024-12-20
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1和$array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建構一...
    程式設計 發佈於2024-12-20
  • 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-12-20
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段中:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內...
    程式設計 發佈於2024-12-20
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-12-20
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-12-20
  • 填充空 Python 清單時如何避免 IndexError?
    填充空 Python 清單時如何避免 IndexError?
    修復將元素分配給列表時的IndexError嘗試通過依次分配每個元素來創建列表時,您可能會遇到IndexError如果目標清單最初為空。出現此錯誤的原因是您試圖存取清單中不存在的索引。 要解決此問題並將元素正確添加到列表中,您可以使用追加方法:for l in i: j.append(l)此...
    程式設計 發佈於2024-12-20
  • 如何在 Android 中解析 ISO 8601 日期/時間字串?
    如何在 Android 中解析 ISO 8601 日期/時間字串?
    在Android 解析ISO 8601 日期/時間字串問題:您已收到來自Web 服務的標準ISO 8601字串,例如“2010-10-15T09:27:37Z”。如何在Android中將此字串轉換為日期/時間物件以進行進一步操作? 答案:Android提供了一個SimpleDateFormat類,讓...
    程式設計 發佈於2024-12-20
  • 如何使用正規表示式檢測 URL(包括裸 URL)?
    如何使用正規表示式檢測 URL(包括裸 URL)?
    使用正規表示式偵測 URL您目前的程式碼無法符合缺少「http://」前綴的裸 URL。為了解決這個問題,可以考慮採用綜合正規表示式:https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9(...
    程式設計 發佈於2024-12-20
  • 如何在 AngularJS 中有效地求和數組屬性?
    如何在 AngularJS 中有效地求和數組屬性?
    AngularJS 中的高級數組求和在 AngularJS 中,對數組屬性求和可能是一項常見任務。基本方法包括迭代數組並累積屬性值。然而,當面對多個陣列和不同的屬性名稱時,這種方法變得乏味。 為了解決這個問題,需要一個更靈活、可重複使用的解決方案,它允許對任何陣列屬性進行方便的求和。這可以使用 re...
    程式設計 發佈於2024-12-20
  • 如何在不進行按引用修改的情況下高效檢索第一個數組元素?
    如何在不進行按引用修改的情況下高效檢索第一個數組元素?
    在不透過引用操作的情況下檢索數組的第一個元素獲取數組的第一個元素可能是編程中的常見任務。雖然有多種方法可以實現這一點,但重要的是要考慮不使用引用操作的約束,就像 array_shift 的情況一樣。本文探討了在 PHP 中實現此目標的幾種有效方法。 O(n) 方法:一種方法是使用 array_val...
    程式設計 發佈於2024-12-20
  • C++ 函式宣告中「const」的真正意義是什麼?
    C++ 函式宣告中「const」的真正意義是什麼?
    解密返回類型、函數參數和成員函數中的Const 關鍵字C 程式碼片段中:const int* const Method3(const int* const&amp;) const;the術語“const”出現多次,每次都有特定含義。 1.傳回型別中的 Const(指向 Int Const 的...
    程式設計 發佈於2024-12-20
  • 使用“list.List”是建立帶有字串鍵和列表值的 Go 映射的最佳方法嗎?
    使用“list.List”是建立帶有字串鍵和列表值的 Go 映射的最佳方法嗎?
    建立字串到清單的對應問題:您想要建立一個有字串型別鍵的映射和列表類型的值。以下程式碼片段是否是正確的方法:package main import ( "fmt" "container/list" ) func main() { x :=...
    程式設計 發佈於2024-12-19
  • 使用 html css 和 javascript 幻覺的 Tic-Tac-Toe 遊戲 https://www.instagram.com/webstreet_code/
    使用 html css 和 javascript 幻覺的 Tic-Tac-Toe 遊戲 https://www.instagram.com/webstreet_code/
    在 Instagram 上關注我們:https://www.instagram.com/webstreet_code/ ? ✨ 有玻璃效果的井字遊戲! ✨? 我剛剛使用 HTML、CSS 和 JavaScript 構建了一款經典的 Tic-Tac-Toe 遊戲,具有時尚的玻璃態設計。觀看視頻,看看...
    程式設計 發佈於2024-12-19
  • TB 級資料庫的 MySQL 與 NoSQL:聚集索引何時是正確的解決方案?
    TB 級資料庫的 MySQL 與 NoSQL:聚集索引何時是正確的解決方案?
    MySQL:探索資料庫設計迷宮優化大型資料庫時,必須考慮資料庫設計策略以提高效能。在給定的場景中,包含執行緒的 TB 級資料庫由於其龐大的規模而面臨效能挑戰。本文探討了 MySQL 和 NoSQL 之間的選擇,重點介紹了 MySQL 的 innodb 引擎及其聚集索引的優點。 了解 MySQL 的 ...
    程式設計 發佈於2024-12-19

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

Copyright© 2022 湘ICP备2022001581号-3