React中classnames庫使用示例
classnames的引入
從名字上可以看出,這個(gè)庫是和類名有關(guān)的。官方的介紹就是一個(gè)簡單的支持動態(tài)多類名的工具庫。
使用 npm安裝
npm install classnames
使用 Bower安裝
bower install classnames
使用 Yarn安裝
yarn add classnames
引入
import classnames from ‘classnames';
使用 Node.js, Browserify, or webpack:
var classNames = require('classnames'); classNames('foo', 'bar'); // => 'foo bar'
classnames函數(shù)的使用
classNames 函數(shù)接受任意數(shù)量的參數(shù),可以是string、boolean、number、array、dictionary等。
type ClassValue = string I number I ClassDictionary I ClassArray I undef inednull I boolean;
參數(shù) 'foo' 是 { foo: true } 的縮寫。如果與給定鍵關(guān)聯(lián)的值是false的,則該key值將不會包含在輸出中。
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'
數(shù)組的形式
數(shù)組可以按照上面的規(guī)則,遞歸展開數(shù)組中的每一項(xiàng):
var arr = ['b', { c: true, d: false }];` classNames('a', arr); // => 'a b c'
ES6中使用動態(tài)類名
let buttonType = 'primary';` classNames({ [`btn-${buttonType}`]: true });
結(jié)合React一起使用
這個(gè)包是classSet的官方替代品,她最初是在React.js插件包中提供的。
常見的一個(gè)應(yīng)用場景是根據(jù)條件動態(tài)設(shè)置類名,在React中是會寫出如下的代碼:
class Button extends React.Component { // ... render () { var btnClass = 'btn'; if (this.state.isPressed) btnClass += ' btn-pressed'; else if (this.state.isHovered) btnClass += ' btn-over'; return <button className={btnClass}>{this.props.label}</button>; } }
使用classnames可以通過對象非常方便的寫出條件多類名。
var classNames = require('classnames'); 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>; } }
因?yàn)榭梢詫ο蟆?shù)組和字符串參數(shù)混合在一起,所以支持可選的 className props 也更簡單,因?yàn)橹挥姓鎸?shí)的參數(shù)才會包含在結(jié)果中:
var btnClass = classNames('btn', this.props.className, { 'btn-pressed': this.state.isPressed, 'btn-over': !this.state.isPressed && this.state.isHovered });
總結(jié):
在React項(xiàng)目中使用classnames是非常方便我們管理動態(tài)多類名。為我們的工作真正的提效。
以上就是React中classnames庫使用示例的詳細(xì)內(nèi)容,更多關(guān)于React classnames庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
React+echarts?(echarts-for-react)?實(shí)現(xiàn)中國地圖及省份切換功能
這篇文章主要介紹了React+echarts?(echarts-for-react)?畫中國地圖及省份切換,有足夠的地圖數(shù)據(jù),可以點(diǎn)擊到街道,示例我只出到市級,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì)需要的朋友可以參考下2022-11-11React項(xiàng)目配置prettier和eslint的方法
這篇文章主要介紹了React項(xiàng)目配置prettier和eslint的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06React?Refs?的使用forwardRef?源碼示例解析
這篇文章主要為大家介紹了React?之?Refs?的使用和?forwardRef?的源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11React Native基礎(chǔ)入門之初步使用Flexbox布局
React中引入了flexbox概念,flexbox是屬于web前端領(lǐng)域CSS的一種布局方案,下面這篇文章主要給大家介紹了關(guān)于React Native基礎(chǔ)入門之初步使用Flexbox布局的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07React-Native實(shí)現(xiàn)ListView組件之上拉刷新實(shí)例(iOS和Android通用)
本篇文章主要介紹了React-Native實(shí)現(xiàn)ListView組件之上拉刷新實(shí)例(iOS和Android通用),具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07react項(xiàng)目升級報(bào)錯(cuò),babel報(bào)錯(cuò),.babelrc配置兼容等問題及解決
這篇文章主要介紹了react項(xiàng)目升級報(bào)錯(cuò),babel報(bào)錯(cuò),.babelrc配置兼容等問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08React實(shí)現(xiàn)浮層組件的思路與方法詳解
React?浮層組件(也稱為彈出組件或彈窗組件)通常是指在用戶界面上浮動顯示的組件,本文主要介紹了浮層組件的實(shí)現(xiàn)方法,感興趣的小伙伴可以了解下2024-02-02React-router中結(jié)合webpack實(shí)現(xiàn)按需加載實(shí)例
本篇文章主要介紹了React-router中結(jié)合webpack實(shí)現(xiàn)按需加載實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05