当前位置: 首页 > 知识库问答 >
问题:

如何覆盖扩展组件上的类名称?

督飞鸣
2023-03-14

我试图在某个页面上以不同的方式定位此组件。但是,当我为它提供另一个className属性时,它只使用声明组件时提供的原始类的样式。

组成部分:

import React, { Component } from 'react';
import styles from './label.css';

class Label extends Component {
  render() {
    return (
      <div className={styles.labelClass} />
    );
  }
}

export default Label;

我想以不同的方式定位的页面:

import React, { Component } from 'react';
import styles from './page.css';
import Label from '../common/label.jsx';

class Page extends Component {

  render() {
    return (
      <div>
          <Label className={styles.positionLeft} />
      </div>
    );
  }

}

export default Page;

通常情况下,我会使用自定义样式进行此操作,但我必须使用媒体查询,因此在这种情况下,这是不可能的。

共有3个答案

杨安歌
2023-03-14

您需要从Label的props中显式引用className属性-请尝试:

import React, { Component } from 'react';
import styles from './label.css';

class Label extends Component {
  render() {

    let { className } = this.props

    if (!className) {
      className = styles.labelClass
    }

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

export default Label;
濮阳翔
2023-03-14

我通过向组件添加另一个可选属性customClass来修复它。

标签

import React, { Component } from 'react';
import styles from './label.css';

class Label extends Component {
  render() {
    return (
      <div className={styles.labelClass + ' ' + this.props.customClass} />
    );
  }
}

export default Label;

import React, { Component } from 'react';
import styles from './page.css';
import Label from '../common/label.jsx';

class Page extends Component {

  render() {
    return (
      <div>
          <Label customClass={styles.positionLeft} />
      </div>
    );
  }

}

export default Page;
施自珍
2023-03-14

自<代码>

这是一个很好的默认道具使用案例!

class Label extends Component {
  render() {
    return (
      <div className={this.props.className} />
    );
  }
}

Label.defaultProps = {
  className: styles.labelClass
}

这样,如果没有为标签提供类名,它将使用标签类样式,否则,它将使用道具。

 类似资料:
  • 问题内容: 我正在尝试使用Swift协议扩展,却发现这种行为令人困惑。您能帮我得到我想要的结果吗? 请参阅代码最后4行的注释。(如果需要,可以将其复制粘贴到Xcode7游乐场)。谢谢!! 问题答案: 简短的答案是协议扩展不执行类多态性。这是有一定道理的,因为协议可以被结构或枚举采用,并且因为我们不希望仅在没有必要的地方采用协议来引入动态调度。 因此,在中,实例变量(可能更准确地写为)并不意味着您认

  • 问题内容: 如果我上课: 我最初以为我可以通过添加扩展名来覆盖子类而无需子类化: 该代码不会编译,但错误说明了该函数,这很有意义。 我的问题是: 是否仍要重写特定类的功能?换句话说,在某些情况下,例如上面的示例中,我可以替换功能吗?如果没有,是否有其他解决方法或方法来实现该行为(可能声明了另一个协议,idk) 现在,我考虑得更多了,我不得不说这是不可能的,因为是什么阻止某人重写任何标准库函数? 问

  • 问题内容: 如何覆盖管理模板(例如admin / index.html),同时扩展它(请参阅https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing -an-admin-template)? 首先-我知道这个问题已经被问过并回答过(请参阅Django:覆盖和扩展应用程序模板),但是正如答案所示,

  • 问题内容: 是否有可能扩展现有的“标准”过滤器(,,等)?在我的情况下,我需要从YYYYMMDDhhmmss格式解析日期,因此我想扩展(或覆盖)过滤器,而不是编写自己的过滤器。 问题答案: 我不确定我是否正确理解了您的问题,但是如果您想扩展现有过滤器的功能,则可以创建一个装饰现有过滤器的新过滤器。例: 然后,在您的模板中: 上面已经说了,如果您只是想根据给定的格式格式化日期,可以使用现有的日期过滤

  • 我目前正在尝试制作一个脚本,该脚本将grep输入以查看某些内容是否属于某种文件类型(例如zip),尽管文件类型之前的文本可以是任何内容,因此例如 都属于这一类。我正在尝试使用通配符grep这些,到目前为止,我已经尝试过了。 但是每当我这样做时,它都会发现文件很好,但是如果.zip之后有其他字符,它仍然会显示输出例如或仍然会被grep拾取。话虽如此,我应该怎么做才能防止 grep 在后显示具有其他字

  • 我知道在香草ES6中,您可以编写一个,它扩展了一个函数类。这里解释了这一点。 React支持两个ES6类组件,通过扩展React。组件和功能组件。但是,当尝试扩展功能组件时,我遇到了以下错误。 我正在尝试编写一些扩展组件的代码,这些代码同时适用于ES6类组件和功能组件。我想写一个函数,返回一个组件,但不是一个高阶组件,我只想扩展和修改一些道具。 下面是一些我尝试过但不起作用的示例代码。这可能吗?我