makeStyles -> useStyles

makeStyles()

Your component style may depend on the props and state of the components:

const useStyles = makeStyles<{ color: string; }>()(
    (_theme, { color }) => ({
        "root": {
            "backgroundColor": color
        }
    })
);

//...

const { classes } = useStyles({ "color": "grey" });

...Or it may not:

const useStyles = makeStyles()({
    //If you don't need neither the theme nor any state or
    //props to describe your component style you can pass-in
    //an object instead of a callback.
    "root": {
        "backgroundColor": "pink"
    }
});

//...

const { classes } = useStyles();

Naming the stylesheets (useful for debugging and theme style overrides)

To ease debugging you can specify a name that will appear in every class names. It is like the option.name in material-ui v4's makeStyles.

It's also required to for theme style overrides.

Usually, you want the name to match the name of the component you are styling. You can pass the name as the first key or a wrapper object like so:

This prevent you from having to remember to update the label when you rename the component.

You can also explicitly provide labels on a case by case basis if you do, your label will overwrite the one generated by tss-react.

useStyles()

Beside the classes, useStyles also returns cx, css and your theme. css is the function as defined in @emotion/css cx is the function as defined in @emotion/css

In some components you may need cx, css or theme without defining custom classes. For that purpose you can use the useStyles hook returned by createMakeStyles.

makeStyles.ts

./MyComponent.tsx

Last updated

Was this helpful?