• 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', { bartrue }); // => 'foo bar'
    classNames({ 'foo-bar'true }); // => 'foo-bar'
    classNames({ 'foo-bar'false }); // => ''
    classNames({ footrue }, { bartrue }); // => 'foo bar'
    classNames({ footrue, bartrue }); // => 'foo bar'
    
    // lots of arguments of various types
    classNames('foo', { bartrue, duckfalse }, 'baz', { quuxtrue }); // => 'foo bar baz quux'
    
    // other falsy values are just ignored
    classNames(nullfalse'bar', undefined, 01, { baznull }, ''); // => '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

    TOP