javascript - Hur delar man värde från ett js-objekt till en sass-variabel i react-js?


Jag försöker ändra mitt applikationstema färger dynamiskt. Jag vill få ett objekt från servern som har värdena på färgerna via JavaScript och sedan överföra dessa värden till SASS-variabler.

Jag hittade många artiklar om detta men inget fungerade för mig, nedan är några av dem:

https://itnext.io/sharing-variables-between-js-and-sass-using-webpack-sass-loader-713f51fa7fa0

https://github.com/pmowrer/node-sass-json-importer#node-sass-json-importer

Finns det ett sätt att importera variabler från JavaScript till Sass eller tvärtom?

https://frontend-cookbook.ack.ee/pages/implementation/SharingVariables.html

Svar #1

Med JavaScript kan du inte ändra värdet på SCSS-filer eftersom SCSS kompileras till CSS på servern och sedan skickas till klienten där JavaScript körs.

Du kan dock uppnå det via CSS-variabler (mer här). Du kan använda CSS-variabler med ett standardvärde och sedan ändra värdet på variabeln via JS.

Svar #2

Jag föreslår att du använder inline-styling för den där temafärgen

<SomeComponent className={this.state.themeColor === 'black'? 'classDarkMode' : 'classNormalMode'} />

Du kan också använda ett bibliotek som styled components som låter dig skicka props direkt till stilar