Styled-component:
import { Typography } from '@material-ui/core';
const Text = styled(Typography)<TextProps>`
margin-bottom: 10px;
color: ${({ textColor }) => textColor ?? textColor};
font-size: ${({ textSize }) => (textSize ? textSize + 'px' : '16px')};
`;
Использование внутри компонента:
<GlobalStyled.Text textColor="green" textSize="20">test</GlobalStyled.Text>
"Предупреждение: React не распознает реквизит textColor
для элемента DOM. Если вы намеренно чтобы он отображался в DOM в качестве настраиваемого атрибута, вместо этого пишите его строчными буквами textcolor
. Если вы случайно передали его из родительского компонента, удалите его из элемента DOM. "
Реквизиты передаются Typography
сам компонент, а не только для стилевого компонента, как обойти это?
ОБНОВЛЕНИЕ
Выпущены стилизованные компоненты 5.1.0: https://github.com/styled-components/styled-components/releases/tag/v5.1.0
Теперь появились новые переходные реквизиты, которые решают эту проблему с помощью фильтрации реквизитов. Вы можете использовать $propsName
, знак доллара перед именем вашего реквизита, и он будет передан ТОЛЬКО компоненту Styled!