Объедините несколько стилизованных элементов со стилизованными компонентами - PullRequest
0 голосов
/ 23 мая 2019

Я знаю, что мы можем расширять или добавлять стили к существующим компонентам с помощью стилевых компонентов, таких как Link компонент react-router-dom. Указанная функция обозначена здесь . Но моя проблема в том, как я могу объединить два или более существующих компонента, а затем добавить еще несколько стилей?

В моем случае у меня есть многократно используемый компонент для текстовых элементов, таких как span, p и a со стандартным размером шрифта, весом шрифта и т. Д. В то же время я хочу использовать реакцию Компонент Link -router-dom. В настоящее время у меня есть что-то вроде этого:

import styled from 'styled-components';
import { Link } from 'react-router-dom';
import { TextElement } from '../common';

/*
Can I do something like this?
const MyLink = styled(Link, TextElement)`
    margin: 10px 0;
`;

or this?
const MyLink = styled([Link, TextElement])`
    margin: 10px 0;
`;
*/

const MyPage = props => (
   <>
       <MyLink to="/next-page" />
   </>
);

Любое предложение будет оценено.

EDIT

Мой TextElement компонент выглядит примерно так:

const Element = styled.span`
   font-size: 13px;
   font-weight: 500;
`;

// These styles are sample only. Actual styles depend on a "variant" prop.
// I did not show it here since it doesn't have to do with the question I'm asking.

export default ({ tag }) => (<Element as={tag} />);

1 Ответ

0 голосов
/ 25 мая 2019

Компонент style может быть оболочкой вашего пользовательского компонента. Например:

Your style component:

export const CustomSpanWrapper = styled.div`
    span {
        ...your-styles
    }
`;

Your other component:

<CustomSpanWrapper>
    <CustomSpan>
</CustomSpanWrapper>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...