Reputation: 409
I am using FileName.module.scss to style my react elements like so:
// this is my component
import React from "react";
import Aux from '../../hoc/Aux';
import classes from './Layout.module.scss';
const layout = (props) => (
<Aux>
<div>Toolbar, SideDrawer, Backdrop</div>
<main className={classes.Content}>
{props.children}
</main>
</Aux>
);
export default layout;
This is my SCSS:
.Content {
margin-top: 72px;
color:red;
}
I don't know why but the scss is not being applied to my main element, any ideas? Thank you!
Upvotes: 10
Views: 26715
Reputation: 147
If you are using Vite then it supports CSS Pre-processors. download Sass and use it.
Step1: download sass
npm i sass
Step 2: Create a Sass Module file
touch app.module.scss
/*inside app.module.scss*/
.container{
...
}
Step 3: Import it and use
//inside app.tsx/jsx
import style from './app.module.scss
<!--Inside the component-->
<div className={style.container}>
.....
</div>
Upvotes: 1
Reputation: 172
You will have to install node-sass in order to work with scss files.
npm install node-sass --save-dev
Your code seems to be alright as post React 16.8 you can use css and scss modules without configuring webpack. I would suggest you check your version of React first. If you are using a version of React < 16.8 then you would have to eject and configure your webpack in order to use css and scss modules.
Upvotes: 13
Reputation: 130
Dont do it... it's a pain of huge build times after your Project grows as described here...
Upvotes: -4
Reputation: 1
I see you're following the same course as me. To fix the issue just use classes.content
instead of classes.Content
Upvotes: -1
Reputation: 1731
If you are using the latest create-react-app
which support sass by default, and I assume Layout.module.scss
is a scss file name.
use import './Layout.module.scss';
instead of import classes from './Layout.module.scss';
then you may directly call the className
<main className={Content}>
{props.children}
</main>
Upvotes: -1