Как передать реквизит сразу всем свойствам компонента css? - PullRequest
0 голосов
/ 20 февраля 2020

Вместо того, чтобы постоянно подбирать реквизит вот так ...

const BubbleContainer = styled.View`
  background-color: ${({ theme }) => (theme.debug ? 'white' : 'blue')};
  border-width: ${({ theme }) => (theme.debug ? '1px' : '0px')};
  color: ${({ theme }) => (theme.debug ? 'red' : 'black')};
`;

Я бы хотел сделать это один раз так ( псевдокод ) ...

const BubbleContainer = styled.View`
  ${({ theme }) =>
    background-color: {theme.debug ? 'white' : 'blue'};
    border-width: {theme.debug ? '1px' : '0px'};
    color: {theme.debug ? 'red' : 'black'};
  }
`;

1 Ответ

1 голос
/ 20 февраля 2020

Вы были близки. Вам просто нужно использовать строку обратного тиска для интерполяции и многострочной поддержки.

const BubbleContainer = styled.View`
  ${({ theme }) => `
    background-color: ${theme.debug ? 'white' : 'blue'};
    border-width: ${theme.debug ? '1px' : '0px'};
    color: ${theme.debug ? 'red' : 'black'};
  `}
`;

Есть много вариантов, это может быть немного более разборчиво:

const BubbleContainer = styled.View`
  background-color: blue;
  border-width: 0px;
  color: black;

  ${({ theme }) => theme.debug && `
    background-color: white;
    border-width: 1px;
    color: red;
  `}
`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...