Per chiunque sia interessato, mi sono imbattuto in questo stesso problema quando si utilizza css modules e react css modules.
maggior parte dei componenti hanno uno stile modulo CSS associato, e in questo esempio il mio pulsante ha il proprio file css, come fa il Promo componente genitore. Ma voglio passare alcuni stili aggiuntivi per Pulsante da Promo
modo che il pulsante in grado style
assomiglia a questo:
Button.js
import React, { Component } from 'react'
import CSSModules from 'react-css-modules'
import styles from './Button.css'
class Button extends Component {
render() {
let button = null,
className = ''
if(this.props.className !== undefined){
className = this.props.className
}
button = (
<button className={className} styleName='button'>
{this.props.children}
</button>
)
return (
button
);
}
};
export default CSSModules(Button, styles, {allowMultiple: true})
Nella componente Button sopra gli stili Button.css gestiscono gli stili di pulsante comuni. In questo esempio, solo una classe .button
Poi nel mio componente dove voglio usare il pulsante, e voglio anche di modificare le cose come la posizione del tasto, è possibile impostare gli stili supplementari in Promo.css
e passare come il puntello className
. In questo esempio, di nuovo chiamato classe .button
. Avrei potuto chiamarlo qualsiasi, ad es. promoButton
.
Naturalmente con moduli css questa classe sarà .Promo__button___2MVMD
mentre il pulsante uno sarà qualcosa di simile a .Button__button___3972N
Promo.js
import React, { Component } from 'react';
import CSSModules from 'react-css-modules';
import styles from './Promo.css';
import Button from './Button/Button'
class Promo extends Component {
render() {
return (
<div styleName='promo' >
<h1>Testing the button</h1>
<Button className={styles.button} >
<span>Hello button</span>
</Button>
</div>
</Block>
);
}
};
export default CSSModules(Promo, styles, {allowMultiple: true});
fonte
2015-12-15 06:41:40
Perché è meglio: prestazioni? leggibilità? altri ? Le stringhe letterali (il tuo primo esempio) fanno parte di ES6, quindi è uno standard. Produce meno codice ed evita un'importazione. Mi sembra * migliore per me, ma l'altra soluzione potrebbe avere argomenti. – Mose
Nell'esempio sopra hai perfettamente ragione, è meglio usare le stringhe ES6. Direi che i nomi di classe sono migliori in termini di leggibilità e DRY quando si ha a che fare con i condizionali, come nel readme dei nomi delle classi mostra https://github.com/JedWatson/classnames#usage-with-reactjs. – gcedo