Різні способи написання CSS у React

Різні способи написання CSS у React
Переклад 6 хв. читання
04 серпня 2023

Ми всі знайомі зі стандартним способом приєднання таблиці стилів у <head> HTML-документа, чи не так? Це лише один з декількох способів написання CSS. Але як це виглядає, якщо ми хочемо створити стиль в односторінковому додатку (SPA), скажімо, в проєкті на React?

Виявляється, є кілька способів стилізації для React-застосунків. Деякі з них перетинаються з традиційною стилізацією, інші не дуже. Розгляньмо всі способи, які ми можемо використати.

Імпорт зовнішніх таблиць стилів

Як випливає з назви, React може імпортувати CSS-файли. Процес схожий на те, як ми підключаємо CSS файл до HTML в <head>:

  • Створіть новий CSS-файл у директорії вашого проєкту.
  • Напишіть CSS.
  • Імпортуйте його до файлу React.

Приблизно так:

import "./style.css";

Зазвичай це відбувається у верхній частині файлу, де імпортуються інші дані:

import { React } from "react";
import "./Components/css/App.css";
function App() {
  return (
    <div className="main">
    </div>
  );
}
export default App;

У цьому прикладі файл CSS імпортується в App.js з теки /Components/css.

Написання вбудованих стилів

Можливо, ви звикли чути, що інлайн-стилі не дуже добре впливають на підтримку коду і т.д., але є ситуації (ось одна з них!), коли це має сенс. І підтримка коду є меншою проблемою в React, оскільки CSS часто вже знаходиться в одному файлі з кодом.

Це дуже простий приклад вбудованого стилю в React:

<div className="main" style={{color:"red"}}>

Однак кращим підходом є використання об'єктів:

  • Спочатку створіть об'єкт, який містить стилі для різних елементів.
  • Потім додайте його до елемента за допомогою атрибута style, а потім виберіть властивість для стилю.

Розглянемо це в контексті:

import { React } from "react";
function App() {
  const styles = {
    main: {
      backgroundColor: "#f1f1f1",
      width: "100%",
    },
    inputText: {
      padding: "10px",
      color: "red",
    },
  };
  return (
    <div className="main" style={styles.main}>
      <input type="text" style={styles.inputText}></input>
    </div>
  );
}
export default App;

Цей приклад містить об'єкт styles, в якому знаходяться ще два об'єкти, один для класу .main, а інший для текстового вводу, які містять правила стилів, подібні до тих, що можна було б побачити у зовнішній таблиці стилів. Ці об'єкти потім застосовуються до атрибута стилю елементів, що знаходяться у повернутій розмітці.

Зверніть увагу, що для посилання на стилі використовуються фігурні дужки, а не лапки, які ми зазвичай використовуємо у звичайному HTML.

Використання модулів CSS

Вони мають перевагу локально локалізованих змінних і можуть використовуватися разом з React. Але що це, власне, таке?

Цитуємо документацію репозиторію:

CSS-модулі працюють шляхом компіляції окремих CSS-файлів як в CSS, так і в дані. На виході виходить звичайний, глобальний CSS, який можна вставити безпосередньо в браузер або об'єднати разом і записати у файл для використання у продакшені. Дані використовуються для зіставлення читабельних імен, які ви використовували у файлах, з безпечним вихідним CSS.

Простіше кажучи, модулі CSS дозволяють нам використовувати одне і те ж ім'я класу в декількох файлах без конфліктів, оскільки кожному імені класу присвоюється унікальне програмне ім'я. Це особливо корисно у великих програмах. Кожне ім'я класу локально обмежується областю видимості конкретного компонента, до якого воно імпортується.

Таблиця стилів модуля CSS схожа на звичайну таблицю стилів, тільки з іншим розширенням (наприклад, styles.module.css). Ось як вони налаштовуються:

  • Створіть файл з розширенням .module.css.
  • Імпортуйте цей модуль у застосунок React (як це було зроблено раніше)
  • Додайте className до елемента або компонента та вкажіть посилання на конкретний стиль з імпортованих стилів.

Максимально простий приклад:

/* styles.module.css */
.font {
  color: #f00;
  font-size: 20px;
}

import { React } from "react";
import styles from "./styles.module.css";
function App() {
  return (
    <h1 className={styles.heading}>Hello World</h1>
  );
}
export default App;

Використання стилізованих компонентів

Ви коли-небудь використовували styled-компоненти? Це досить популярний інструмент, який дозволяє створювати кастомні компоненти, використовуючи CSS у вашому JavaScript коді. Стилізований компонент - це, по суті, React-компонент зі стилями - будьте готові до цього - стилями. Деякі з них включають унікальні імена класів, динамічну стилізацію та краще управління CSS, оскільки кожен компонент має власні окремі стилі.

Встановіть npm-пакет styled-components у командному рядку:

npm install styled-components

Далі імпортуйте його в застосунок React:

import styled from 'styled-components'

Створіть компонент і присвойте йому властивість зі стилем. Зверніть увагу на використання шаблонних літералів, позначених лапками в об'єкті Wrapper:

import { React } from "react";
import styled from "styled-components";
function App() {
  const Wrapper = styled.div`
    width: 100%;
    height: 100px;
    background-color: red;
    display: block;
  `;
  return <Wrapper />;
}
export default App;

Наведений вище компонент Wrapper відобразиться як div, що містить ці стилі.

Умовні стилі

Однією з переваг компонентів зі стилями є те, що самі компоненти є функціональними, тобто ви можете використовувати пропси в межах CSS. Це відкриває двері для умовних операторів і зміни стилів на основі стану або пропсів.

Ось приклад, який це демонструє:

Тут ми маніпулюємо властивістю display для зміни відображення елеменда div. Цей стан контролюється кнопкою, яка перемикає стан div при натисканні. Це, в результаті, перемикає між стилями двох різних станів.

У вбудованих операторах if ми використовуємо знак ? замість звичайного синтаксису if/else. Частина else знаходиться після двокрапки. І не забувайте завжди викликати або використовувати стан після його ініціалізації. Наприклад, в останньому прикладі стан повинен бути над стилями компонента-обгортки.

Щасливого React-стайлінгу!

Ось і все, друзі! Ми розглянули декілька різних способів написання стилів у застосунку React. Не можна сказати, що один з них кращий за інший; звичайно, підхід, який ви використовуєте, залежить від ситуації. Сподіваємось, тепер ви добре їх розумієте і знаєте, що у вашому арсеналі для створення стилів React є безліч інструментів.

Джерело: Different Ways to Write CSS in React
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація