• home > webfront > ECMAS > react >

    jsx动态class写法:vue3与react+classname库

    Author:zhoulujun Date:

    react使用动态添加类名className

    写惯了vue2来说,回到jsx,觉得className写的很不习惯

    https://www.npmjs.com/package/classnames

    这个库可以想vue2里面一样的用法

    classNames('foo', 'bar'); // => 'foo bar'
    classNames('foo', { bar: true }); // => 'foo bar'
    classNames({ 'foo-bar': true }); // => 'foo-bar'
    classNames({ 'foo-bar': false }); // => ''
    classNames({ foo: true }, { bar: true }); // => 'foo bar'
    classNames({ foo: true, bar: true }); // => 'foo bar'
    
    // lots of arguments of various types
    classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
    
    // other falsy values are just ignored
    classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'

    用起来非常方便

    var classNames = require('classnames/dedupe');
    
    class Button extends React.Component {
      // ...
      render () {
        var btnClass = classNames({
          btn: true,
          'btn-pressed': this.state.isPressed,
          'btn-over': !this.state.isPressed && this.state.isHovered
        });
        return <button className={btnClass}>{this.props.label}</button>;
      }
    }


    不用多讲哈



    转载本站文章《jsx动态class写法:vue3与react+classname库》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/jsBase/2019_1213_8711.html