Reagieren: Inline CSS-Module in JSX mit Webpack

9

Ich habe eine minimale React-Komponente, die aus zwei Dateien besteht: button.jsx und button.less . Die Stile werden importiert, und die Klassennamen werden mit einem Hash versehen, damit alle Stile für die Komponente lokal sind.

Das ist großartig, aber ich möchte den gesamten Code in einer Datei haben. Ist es möglich, die Stile in der jsx-Datei zu kapseln, ohne die CSS-Modularität zu verlieren?

Aktueller Code

button.jsx

%Vor%

button.less

%Vor%

webpack.config.js (relevante Bits)

%Vor%

Was ich stattdessen schreiben möchte

button.jsx

%Vor%

Inspiriert von vue.js und vue-loader .

Ich glaube, das ist ein Duplikat dieser unbeantworteten Frage: Verwendung von css-loader inline mit Webpack + React

    
Alp 16.01.2016, 20:09
quelle

2 Antworten

2

Sie können dafür Callback-Loader verwenden. Dies ist tatsächlich ein Workaround, aber es ist der Trick. Implementieren Sie einfach einen Callback, der Ihren CSS-Code extrahiert und durch einen entsprechenden Import ersetzt. Zum Beispiel:

webpack.config.js

%Vor%

button.jsx

%Vor%     
Kreozot 18.01.2016 11:41
quelle
2

Ich habe einen Webpack-Loader für diesen Zweck geschrieben:

Ссылка

Sie können ein einzelnes style-Tag pro JSX-Datei schreiben und es unterstützt auch webpack-CSS-Module, wenn Sie möchten.

Bei der Erstellung extrahiert es die Regeln aus Ihrem Stil-Tag und verschiebt sie in eine externe CSS-Datei.

Ich sollte beachten, dass es, da es Ihre Regeln einfach in eine externe CSS-Datei extrahiert, gut mit SASS, autoprefixer usw. zusammenspielt.

    
Christopher Davies 29.03.2016 10:32
quelle