CSS 模块通过 属性 作为样式 属性

CSS modules pass property as styles property

我想将自定义 class 添加到我正在学习反应的应用中的 Button 组件。

在我的 Form.js 我有

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

class Form extends Component {
  render() {

    const click = this.props.onSubmit;

    return(
      <div className={styles.form}>
        <Button
          name="Register"
          className="register"
          onClick={click} />
      </div>
    );
  }
}

export default Form;

Button.js 我有

import React from 'react';
import styles from '../css/LoginElements.css';

const Button = ({name, onClick, className }) => (
  <div className={styles.wrapper}>
    <div className="field">
      <div className={className? styles.className : styles.button} onClick={onClick}>{name}</div>
    </div>
  </div>
);

export default Button;

问题是,如果我将 .className 放入我的 LoginElements.css 文件,而不是我希望的 .registerstyles.className 将起作用。

我需要做什么才能将按钮 属性 中的 class 名称用作 class?不只是 register,而是像 LoginElements__register__34Kfd(局部范围)?

也许我没有正确阅读,但我认为问题在于您使用点表示法从样式而不是括号访问类名。

你能把 Button.js 更新成

<div className={className? styles[className] : styles.button}

点符号不会将 className 识别为变量,而是将其按字面意思视为 属性 名称