Skip to main content
Практика завдань

Проблеми та рішення CSS-in-js

Що таке CSS-in-JS?

CSS-in-JS — це підхід до стилізації компонентів, де CSS пишеться безпосередньо в JavaScript файлах, часто з використанням бібліотек, таких як styled-components, emotion, linaria, stitches та інших.

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

Але він також має недоліки, особливо якщо використовується без розуміння підводних каменів.


Основні проблеми CSS-in-JS та їх рішення

Втрата продуктивності при рендерингу

Щоразу, коли компонент рендериться, бібліотека може відтворювати класи або стилі. Це особливо критично в великих списках або при частих оновленнях інтерфейсу.

Рішення:

  • Використовуйте статичні стилі, коли це можливо.
  • Обгортайте компоненти в React.memo / useMemo.
  • Деякі бібліотеки (наприклад, Emotion) мають функції css для кешування.

Збільшений розмір бандлу

Бібліотеки CSS-in-JS додають свій час виконання до JavaScript бандлу, особливо якщо використовуються без оптимізацій.

Рішення:

  • Використовуйте бібліотеки без часу виконання, такі як:

  • vanilla-extract

  • astroturf

  • linaria

  • Або використовуйте компіляцію під час збірки (babel plugin, babel macro, vite plugin, webpack loader).

Проблеми SSR

CSS-in-JS може викликати проблеми з гідратацією або відсутніми стилями при першому рендерингу.

Рішення:

  • Використовуйте правильну настройку SSR
  • Налаштуйте витяг стилів на стороні сервера
  • Використовуйте бібліотеки з хорошою підтримкою SSR

Рекомендація:

Вибирайте бібліотеки CSS-in-JS обачно, враховуючи вимоги вашого проєкту та обмеження продуктивності.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань