如何覆盖扩展组件上的className?

Jim*_*ers 5 javascript css reactjs

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

成分:

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

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

export default Label;
Run Code Online (Sandbox Code Playgroud)

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

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;
Run Code Online (Sandbox Code Playgroud)

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

Jim*_*ers 2

我通过向组件添加另一个可选属性 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;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)