https://hook.eu1.make.com/l745h29yrjj2pp78eyrh4ppj5qxrgqet

Lekcja tekstowa
Lekcja audio
Zadanie
Dodatkowe informacje
Dodatkowe informacje
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Kod źródłowy: https://github.com/szkola-reacta/materialy-classnames

Dokumentacja: https://github.com/JedWatson/classnames

Instalacja

npm install classnames

Wykorzystanie

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 typesclassNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'// other falsy values are just ignoredclassNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'

Arrays will be recursively flattened as per the rules above:

var arr = ['b', { c: true, d: false }];classNames('a', arr); // => 'a b c'

Dynamic class names with ES2015

If you're in an environment that supports computed keys (available in ES2015 and Babel) you can use dynamic class names:

let buttonType = 'primary';classNames({ [`btn-${buttonType}`]: true });

Usage with React.js

This package is the official replacement for classSet, which was originally shipped in the React.js Addons bundle.

One of its primary use cases is to make dynamic and conditional className props simpler to work with (especially more so than conditional string manipulation). So where you may have the following code to generate a className prop for a  in 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

{this.props.label}; } }

You can express the conditional classes more simply as an object:

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{this.props.label};  }}

Because you can mix together object, array and string arguments, supporting optional className props is also simpler as only truthy arguments get included in the result:

var btnClass = classNames('btn', this.props.className, {  'btn-pressed': this.state.isPressed,  'btn-over': !this.state.isPressed && this.state.isHovered});

Uwaga! Istnieje nowa wersja tego Kursu - Szkoła Reacta 2.0. Sprawdź, czy program z tego kursu jest dla Ciebie odpowiedni - jeśli pracujesz z legacy aplikacjami, to na pewno skorzystasz. Jeśli interesuje Cię bardziej nowoczesny stack, wybierz Szkołę Reacta 2.0.

  • Nauczysz się Reacta krok po kroku, od podstaw aż po zaawansowane zagadnienia
  • Zdobędziesz umiejętności potrzebne do awansu i podwyżki
  • Jeśli dopiero zaczynasz karierę w IT, to zmienisz pracę na lepszą - zdobędziesz wymagane doświadczenie
Patryk Omiotek
Patryk Omiotek

Jestem Senior Fullstack Developerem specjalizującym się w tworzeniu aplikacji internetowych w stacku TypeScript, React, Next.js, NestJS. Realizowałem wiele ciekawych i wymagających projektów m. in. dla znanej akademii filmowej z USA oraz startupów z Doliny Krzemowej.

Od 8 lat dzielę się swoją wiedzą jako ekspert na konferencjach i trener IT. Prowadzę też szkolenia dla programistów w Bottega IT Minds, firmie która zrzesza najlepszych ekspertów IT. Jestem także pomysłodawcą i założycielem Szkoły Reacta oraz kanału Web Amigos na YouTube.

Na codzień oprócz kodowania, zajmuję się weryfikacją IT, czyli w trakcie procesów rekrutacyjnych sprawdza poziom wiedzy kandydatów na stanowiska Junior, Regular, jak i Senior developerów.

7.6 Biblioteka classnames
keyboard_arrow_down
React od podstaw v1
99%
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.