【问题标题】:Giving a className to a custom React component not working [duplicate]为自定义 React 组件提供类名不起作用 [重复]
【发布时间】:2017-10-31 23:57:56
【问题描述】:

我有一些使用另一个组件的组件。我希望外部组件为内部组件提供位置 CSS,因此我尝试执行以下操作:

import OptionsMenu from './OptionsMenu'
import { withStyles } from 'material-ui/styles';

const styles = theme => ({
  optionsPosition: {
    position: 'absolute',
    right: 0,
    top: 0
  }
});


class Modal extends React.Component {
  render() {
    const { classes } = this.props;

    return (
      <Card>
        ...
        <OptionsMenu className={classes.optionsPosition}/>
      </Card>
    )
  }
}

export default withStyles(styles)(Modal);

奇怪的是,当我将OptionsMenu 包装在一个 div 中时,className 起作用了

<Card>
  ...
  <div className={classes.optionsPosition}>
    <OptionsMenu />
  </div>
</Card>

但我想避免不必要的div 并理解为什么OptionsMenu 会忽略样式?

【问题讨论】:

    标签: javascript css reactjs material-ui


    【解决方案1】:

    输入&lt;OptionsMenu className={classes.optionsPosition}/&gt; 时,您只是声明您向OptionsMenu 组件发送了一个名为className 的道具,该道具包含值classes.optionsPosition

    OptionsMenu 组件中,您可以使用此道具并将其作为className 应用于html DOM 元素(div/span 等)。

    或者,在 Card 组件中,您可以将子 (OptionsMenu) 包装在具有相关类名的 div 中。

    【讨论】:

    • 您如何处理更复杂的className 对象以将其应用于组件及其不同的子元素?
    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2017-03-19
    • 2020-09-23
    相关资源
    最近更新 更多