classnames 的用法总结
React 和 Vue class对比
在React项目开发中,类名的管理不像 Vue 那么方便;
如何为组件添加 CSS 的 class?
传递一个字符串作为 className 属性:
render() {
return Menu
}
CSS 的 class 依赖组件的 props 或 state 的情况很常见:
render() {
let className = ‘menu’;
if (this.props.isActive) {
className += ‘ menu-active’;
}
return Menu
}
在官方的提示下推荐开发者使用 classnames npm 包来管理自己的类名会方便很多
(function () { 'use strict'; var hasOwn = {}.hasOwnProperty; function classNames () { var classes = [];
for (var i = 0; i < arguments.length; i++) { var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') { classes.push(arg);
} else if (Array.isArray(arg) && arg.length) { var inner = classNames.apply(null, arg);
if (inner) { classes.push(inner); } } else if (argType === 'object') { for (var key in arg) { if (hasOwn.call(arg, key) && arg[key]) { classes.push(key); } } } } return classes.join(' '); }
if (typeof module !== 'undefined' && module.exports) { classNames.default = classNames; module.exports = classNames;
} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { define('classnames', [], function () { return classNames; });
} else { window.classNames = classNames; } }());
|
classnames github库