Как сочетать style-system с React Material?
Я хочу использовать стилизованную систему в своем проекте, который является админ-панелью. Я построил проект на основе React Material, и у меня есть много разных форм с вводом, выбором, флажками и т. Д. Во многих местах мне нужно установить некоторые поля / отступы для элементов, и я делаю этот момент с помощью некоторого настраиваемого компонента Box, который использует функции стилизованной системы (пространство, цвет и т. Д.). Но в итоге у меня получилась довольно громоздкая структура, примерно такая:
Но потом я понимаю, что в react-material много компонентов, и что мне делать? Переопределить их все, чтобы иметь какой-то похожий стиль? Или какой способ может быть удобнее?
1 ответ
Так что то, что вы просите, определенно может быть достигнуто без добавления такого большого количества шума в разметку.
Во-первых,
styled
разметка работает для всех компонентов пользовательского интерфейса материала . К счастью, ТАКЖЕ совместим с
styled-components
. Так ты можешь это сделать
const StyledButton = styled(TextField)`
color: red;
// to access theme in a styled-system way
${get("mt", 3)};
`;
Этот аксессуар называется
get
немного уникален, он исходит из этого пакета . Это позволяет использовать все
styled-system
ароматизированные ключи внутри
styled-component
.
Если вам нужны встроенные реквизиты для всех материальных компонентов, как вы описали, это немного сложнее. Вам нужно будет обернуть каждый компонент подходящими декораторами, которые включают такие встроенные свойства. Создание в основном теневой библиотеки.
import styled from 'styled-components';
import { variant, space, layout, position } from 'styled-system';
export default styled(TextField)(
position,
layout,
space,
// whatever else
);
Ознакомьтесь с официальным руководством по сборке, чтобы лучше понять.