10

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!

5 Answers 5

13

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.

Sign up to request clarification or add additional context in comments.

1 Comment

node-sass has been deprecated. Use the dart sass instead - npm install sass
2

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>

Comments

-1

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>

1 Comment

This can create the problems in the form of variable shadowing (for example, if you had button defined in your component, and the styles defined for class called .button in your scss).
-1

I see you're following the same course as me. To fix the issue just use classes.content instead of classes.Content

Comments

-4

Dont do it... it's a pain of huge build times after your Project grows as described here...

1 Comment

This is interesting. I had no idea.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.