Стилизованные компоненты - один из новых способов использования CSS в современном JavaScript. Он предназначен для того, чтобы стать преемником модулей CSS, способом написания CSS, который привязан к одному компоненту и не проникает в какой-либо другой элемент на странице.
- Краткая история
- Представляем стилизованные компоненты
- Установка
- Ваш первый стилизованный компонент
- Использование реквизита для настройки компонентов
- Расширение существующего стилизованного компонента
- Это обычный CSS
- Использование префиксов поставщиков
- Вывод
Краткая история
Когда-то Интернет был действительно простым, а CSS даже не существовало. Мы выложили страницы с помощьюстолыи рамы. Хорошие времена.
потомCSSожили, и через некоторое время стало ясно, что фреймворки могут сильно помочь, особенно в построении сеток и макетов, причем большую роль в этом играют Bootstrap и Foundation.
Препроцессоры вродеSASSи другие очень помогли замедлить внедрение фреймворков и лучше организовать код, такие соглашения, какБЭМиSMACSSросло в использовании, особенно внутри команд.
Соглашения - это не решение всего, и их сложно запомнить, поэтому в последние несколько лет с увеличением числаJavaScriptи построения процессов в каждом внешнем проекте, CSS нашел свое место в JavaScript (CSS-в-JS).
Новые инструменты исследовали новые способы создания CSS-in-JS, и некоторые из них стали пользоваться все большей популярностью:
- React Style
- jsxstyle
- Радий
и больше.
Представляем стилизованные компоненты
Один из самых популярных из этих инструментов -Стилизованные компоненты.
Он призван стать преемникомМодули CSS, способ написать CSS, ограниченный одним компонентом, без утечки в какой-либо другой элемент на странице.
(подробнее о модулях CSSздесьиздесь)
Стилизованные компоненты позволяют вам писать простой CSS в ваших компонентах, не беспокоясь о конфликтах имен классов.
Установка
Установите стилизованные компоненты, используяnpmили жепряжа:
npm install styled-components
yarn add styled-components
Вот и все! Теперь все, что вам нужно сделать, это добавить этот импорт:
import styled from 'styled-components'
Ваш первый стилизованный компонент
Сstyled
объект импортирован, теперь вы можете приступить к созданию стилизованных компонентов. Вот первый:
const Button = styled.button`
font-size: 1.5em;
background-color: black;
color: white;
`
Button
сейчасРеагироватьКомпонент во всем величии.
Мы создали его, используя функцию стилизованного объекта, названнуюbutton
в этом случае и передача некоторых свойств CSS влитерал шаблона.
Теперь этот компонент можно отобразить в нашем контейнере с использованием обычного синтаксиса React:
render(<Button />)
Стилизованные компоненты предлагают другие функции, которые вы можете использовать для создания других компонентов, а не толькоbutton
, подобноsection
,h1
,input
и много других.
Используемый синтаксис с обратной кавычкой поначалу может показаться странным, но он называетсяТеги с тегами, это простой JavaScript и способ передать аргумент функции.
Использование реквизита для настройки компонентов
Когда вы передаете некоторые свойства стилизованному компоненту, он передает их вДОМузел смонтирован.
Например, вот как мы передаемplaceholder
иtype
реквизит дляinput
компонент:
const Input = styled.input`
//...
`
render(
<div>
<Input placeholder="…" type=“text” />
</div>
)
Это сделает то, что вы думаете, вставив эти реквизиты как атрибуты HTML.
Реквизит вместо того, чтобы слепо передаватьсяДОМтакже может использоваться для настройки компонента на основе значения свойства. Вот пример:
const Button = styled.button`
background: ${props => (props.primary ? 'black' : 'white')};
color: ${props => (props.primary ? 'white' : 'black')};
`
render(
<div>
<Button>A normal button</Button>
<Button>A normal button</Button>
<Button primary>The primary button</Button>
</div>
)
Установкаprimary
prop меняет цвет кнопки.
Расширение существующего стилизованного компонента
Если у вас есть один компонент, и вы хотите создать похожий, но с немного другим стилем, вы можете использоватьextend
:
const Button = styled.button`
color: black;
//...
`
const WhiteButton = Button.extend </span><span style="color:#e6db74"> color: white; </span><span style="color:#e6db74">
render(
<div>
<Button>A black button, like all buttons</Button>
<WhiteButton>A white button</WhiteButton>
</div>
)
Это обычный CSS
В стилизованных компонентах вы можете использовать уже знакомый и любимый CSS. Это простой CSS. Это не псевдо-CSS и не встроенный CSS с его ограничениями.
Вы можете использовать медиа-запросы,гнездованиеи все, что вам может понадобиться.
Вот пример медиа-запроса:
const Button = styled.button`
color: green;
@media screen and (max-width: 800px) {
color: black;
}
`
Использование префиксов поставщиков
Стилизованные компоненты автоматически добавляют все необходимые префиксы поставщиков, поэтому вам не нужно беспокоиться об этой проблеме.
Вывод
Вот и все, что касается введения в стилизованные компоненты! Эти концепции помогут вам разобраться в концепции и освоить этот способ использования CSS в JavaScript.
Скачать мою бесплатнуюСправочник по React
Больше руководств по реакции:
- Пример простого приложения React: получение информации о пользователях GitHub через API
- Создайте простой счетчик с помощью React
- Настройка VS Code для разработки на React
- Как передать реквизиты дочернему компоненту через React Router
- Создайте приложение с Electron и React
- Учебник: создание электронной таблицы с помощью React
- Дорожная карта для изучения React
- Узнайте, как использовать Redux
- Начало работы с JSX
- Стилизованные компоненты
- Введение в Redux Saga
- Введение в React Router
- Введение в React
- Компоненты React
- Виртуальный DOM
- Реагировать на события
- Состояние реакции
- React Props
- Фрагмент реакции
- API контекста React
- React PropTypes
- Концепции React: декларативный
- Реагировать: как показать другой компонент при нажатии
- Как зацикливаться внутри React JSX
- Props vs State в React
- Что лучше: jQuery или React?
- Сколько JavaScript вам нужно знать, чтобы использовать React?
- Введение в Гэтсби
- Как сослаться на элемент DOM в React
- Однонаправленный поток данных в React
- Реагировать на компоненты более высокого порядка
- Реагировать на события жизненного цикла
- Концепция React: неизменность
- Концепция React: чистота
- Введение в React Hooks
- Введение в приложение create-react-app
- Концепция React: композиция
- React: презентационные и контейнерные компоненты
- Разделение кода в React
- Рендеринг на стороне сервера с помощью React
- Как установить React
- CSS в React
- Использование SASS в React
- Обработка форм в React
- React StrictMode
- Реагировать на порталы
- React Render Props
- Тестирование компонентов React
- Как передать параметр обработчикам событий в React
- Как обрабатывать ошибки в React
- Как вернуть несколько элементов в JSX
- Условный рендеринг в React
- React, как передать props дочерним компонентам
- Как получить значение элемента ввода в React
- Как использовать хук useState React
- Как использовать хук useCallback React
- Как использовать хук useEffect React
- Как использовать хук useMemo React
- Как использовать хук useRef React
- Как использовать хук useContext React
- Как использовать хук useReducer React
- Как подключить приложение React к бэкэнду в том же источнике
- Учебное пособие по маршрутизатору Reach Router
- Как использовать инструменты разработчика React
- Как научиться React
- Как отлаживать приложение React
- Как отрендерить HTML в React
- Как исправить ошибку `dangerousSetInnerHTML` не соответствовало в React
- Как я исправил проблему с состоянием формы входа в React и автозаполнением браузера
- Как настроить HTTPS в приложении React на локальном хосте
- Как исправить ошибку "не удается обновить компонент при рендеринге другого компонента" в React
- Могу ли я использовать перехватчики React внутри условного оператора?
- Использование useState с объектом: как обновить
- Как перемещать блоки кода с помощью React и Tailwind
- React, сфокусируйте элемент в React при добавлении в DOM
- Реагировать, редактировать текст по двойному щелчку