React - 使用带导入的css的classNames

Pac*_*chu 1 css class-names reactjs css-loader

我正在使用react,我找到了这个很棒的库,可以帮助你为名为classNames的组件定义css类.我也使用webpack css-loader将css导入到我的组件中,当尝试使用带导入css的classNames时,我收到语法错误.

这是我的例子:

import React from 'react';
import styles from './style.css';
import classNames from 'classnames';

export default class Menu extends React.Component {
    render() {
        let style = classNames({
            styles.someClass: true
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能同时使用?

ctr*_*usb 7

您可以使用ES6/2015 的计算属性语法,例如:

import React from 'react';
import styles from './style.css';
import classNames from 'classnames';

export default class Menu extends React.Component {
  render() {
    const style = classNames({
      // This is a computed property, i.e. surrounded by []
      [styles.someClass]: true
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

但这仅适用于单个类,在这些简单的情况下,您可以执行以下操作:

const style = this.state.active ? styles.someClass : '';
Run Code Online (Sandbox Code Playgroud)

classNames库在组合多个类时特别有用,如下所示:

import React from 'react';
import styles from './style.css';
import classNames from 'classnames';

export default class Menu extends React.Component {
  render() {
    const style = classNames(
      // add as many classes or objects as we would like here
      styles.foo,
      styles.bar,
      { [styles.someClass]: this.props.active }
    );
  }
}
Run Code Online (Sandbox Code Playgroud)