Измените компонент реакции css с помощью стилизованного компонента

Я использую какой-то компонент из библиотеки, которого нет в моем репозитории проекта. Поскольку я использую styled-component для разработки собственного компонента. Я хочу внести небольшие изменения в компонент, который я использую из другой библиотеки, не касаясь базы кода. Вот небольшой пример того, чего я пытаюсь достичь, но ни один из следующих стилей не применяется к CustomCom.

Библиотека пользовательского интерфейса

const CustomCom = ()=>{
  return (
    <div>Child</div>
  );
}

Мое репо

export default styled(CustomCom)`
  height: 20px;
  background: green;
`;
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
1 033
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это возможно только в том случае, если компонент передает className элементу DOM, согласно документации styled-components.

The styled method works perfectly on all of your own or any third-party components, as long as they attach the passed className prop to a DOM element.

https://www.styled-components.com/docs/basics#styling-any-components

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

const CustomCom = ({className})=>{
  return (
    <div className = {className}>Child</div>
  );
}

class App extends Component {
  render() {
    const MyElem = styled(CustomCom)`
      height: 20px;
      background: green;
    `
    return (
      <MyElem />
    );
  }
}

Попробуйте ниже

export const newCustom  = styled(CustomCom)`
height: 20px;
background: green;
`;

Теперь используйте этот пользовательский компонент

<newCustom   />

Если вы хотите расширить существующие HTML-теги, вы можете сделать это:

export const newCustom  = styled.div`
height: 20px;
background: green;
`;

Это именно тот код, который у них есть в их вопросе, и он не решает проблему, которую они имеют, которая использует styled-components на стороннем компоненте, который не передает className.

AnonymousSB 11.12.2018 02:13

Другие вопросы по теме