Переопределение стилей компонентов React с помощью стилизованного компонента

Я попытался переопределить стиль компонента, созданного стандартным способом стилизованных компонентов (styled.), И оба способа (styled() и style.extends) у меня сработали.

Но когда я пытаюсь переопределить стиль компонента простого реагирования с помощью подхода styled(), он отображает компонент, но не отменяет его стиль.

Ниже приведен фрагмент кода

import React, { Component } from "react";
import styled from "styled-components";

export default class MyLabel extends Component {
  render() {
    return <label>{this.props.children}</label>;
  }
}

const StyledMyLabel = styled(MyLabel)`
    color: green;
`;

И для отображения я использую следующий синтаксис

<StyledMyLabel>My Styled Label</StyledMyLabel>

Пожалуйста, обратитесь к ссылка на codeandbox, который может быть полезен

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
8
0
14 208
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

<label style = {{color: "green"}}>{this.props.children}</label>

или

const style = {color : "green"};
<label style = {style}>{this.props.children}</label>

Может кто-нибудь объяснить, почему это неправильный ответ?

Yigit Alparslan 05.01.2020 22:21
Ответ принят как подходящий

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

import React, { Component } from "react";
import styled from "styled-components";

export default class MyLabel extends Component {
  render() {
    return <label className = {this.props.className}>{this.props.children}</label>;
  }
}

const StyledMyLabel = styled(MyLabel)`
    color: green;
`;

ПРИМЕЧАНИЕ:

Consider carefully whether to wrap your own components in a styled component, when it isn't necessary. You will disable the automatic whitelisting of props, and reverse the recommended order of styled components and structural components.

Смотрите дополнительную информацию здесь.

Обновление ссылки ... это относится к некоторой связанной информации: styled-components.com/docs/…

milesmeow 06.09.2018 01:57

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