JSX Style
И наконец, последний в списке способ стилизации React-компонентов - JSX Style (есть еще утилитарные фреймворки, но это не специфический для React подход).
Репозиторий jsxstyle: https://github.com/jsxstyle/jsxstyle
jsxstyle предлагает указывать стили в inline-режиме, то есть не выносить их в отдельный объект, а писать прямо в пропсах компонентов. Библиотека предоставляет несколько готовых компонентов с уже предустановленными стилями отображения (
Пример: https://codesandbox.io/s/jsxstyle-react-junior-wn88n?file=/src/App.js
jsxstyle утверждает, что самое сложное в CSS - придумывать названия для классов, поэтому они полностью избавились от них, предоставив готовые блоки и максимально утилитарный стиль использования.
В целом, это немного другой способ "думать о стилях", чем те, которые мы разбирали ранее. Документация утверждает, что он проще и удобнее для работы и для оптимизации. 🤔
По умолчанию компоненты jsxstyle рендерятся в обычные дивы, но можно указать любой тег в пропе
Атрибуты, которые не относятся к стилям и должны быть установлены прямо на HTML-элемент (вроде
Поддерживаются псевдоэлементы и псевдоклассы. Чтобы задать, например, цвет плейсхолдера, нужно использовать свойство
Медиа-запросы тоже есть. Чтобы их использовать нужно указать список запросов в пропе
В качестве альтернативы такому громоздкому синтаксису можно использовать хук
В целом, мне не очень нравится образ мышления "jsxstyle", возможно, мой мозг для него еще просто не готов 🤯. Код получается, возможно, и более понятным (или нет), но уж точно намного более раздутым. Но что еще хуже, нет развернутой документации, только readme в репозитории. Так что дальше углубляться в jsxstyle, пожалуй, не буду.
#стили #jsxstyle #примерыкода
И наконец, последний в списке способ стилизации React-компонентов - JSX Style (есть еще утилитарные фреймворки, но это не специфический для React подход).
Репозиторий jsxstyle: https://github.com/jsxstyle/jsxstyle
jsxstyle предлагает указывать стили в inline-режиме, то есть не выносить их в отдельный объект, а писать прямо в пропсах компонентов. Библиотека предоставляет несколько готовых компонентов с уже предустановленными стилями отображения (
Block
, Inline
, Row
и т. п.). При этом скомпилированные стили не остаются инлайновыми, а превращаются в нормальные CSS-таблицы, а компонент трансформируется в обычный HTML-тег с каким-то уникальным классом.Пример: https://codesandbox.io/s/jsxstyle-react-junior-wn88n?file=/src/App.js
jsxstyle утверждает, что самое сложное в CSS - придумывать названия для классов, поэтому они полностью избавились от них, предоставив готовые блоки и максимально утилитарный стиль использования.
В целом, это немного другой способ "думать о стилях", чем те, которые мы разбирали ранее. Документация утверждает, что он проще и удобнее для работы и для оптимизации. 🤔
По умолчанию компоненты jsxstyle рендерятся в обычные дивы, но можно указать любой тег в пропе
component
. Атрибуты, которые не относятся к стилям и должны быть установлены прямо на HTML-элемент (вроде
placeholder
, type
) можно передать в пропе props
. Хотя в документации сказано, что такие свойства как placeholder
, type
, id
можно указывать и на верхнем уровне компонента, но у меня это почему-то не сработало.Поддерживаются псевдоэлементы и псевдоклассы. Чтобы задать, например, цвет плейсхолдера, нужно использовать свойство
placeholderColor
, а для изменения цвета при фокусе - focusColor
.Медиа-запросы тоже есть. Чтобы их использовать нужно указать список запросов в пропе
mediaQueries
, как объект, где у каждого запроса есть имя. Затем эти имена нужно использовать как префиксы для стилевых пропсов.В качестве альтернативы такому громоздкому синтаксису можно использовать хук
useMatchMedia
.В целом, мне не очень нравится образ мышления "jsxstyle", возможно, мой мозг для него еще просто не готов 🤯. Код получается, возможно, и более понятным (или нет), но уж точно намного более раздутым. Но что еще хуже, нет развернутой документации, только readme в репозитории. Так что дальше углубляться в jsxstyle, пожалуй, не буду.
#стили #jsxstyle #примерыкода
Telegram
React Junior
10 способов стилизации React-приложений
React не работает со стилями и не имеет предпочтений в том, как стилизовать приложение. Это значит, что мы можем действовать по своему усмотрению: можем писать инлайновый стили или по традиции подключать внешние файлы.…
React не работает со стилями и не имеет предпочтений в том, как стилизовать приложение. Это значит, что мы можем действовать по своему усмотрению: можем писать инлайновый стили или по традиции подключать внешние файлы.…
👍2👏1