Skip to content

Instantly share code, notes, and snippets.

@kof
Last active November 23, 2021 08:13
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kof/43ac135686c71c536deb0db61b94e6e3 to your computer and use it in GitHub Desktop.
Save kof/43ac135686c71c536deb0db61b94e6e3 to your computer and use it in GitHub Desktop.
Inject styles with custom hooks
const styles = {
button: {
color: 'red'
}
}
const Button = () => {
const {classes} = useStyles(styles)
return <button className={classes.button}>Test<Button>
}
@Janpot
Copy link

Janpot commented Nov 2, 2018

Pure from an API consumer point of view, I think I'd prefer to do:

const MyButton = ({ children, spacing = 10 }) => {
  const theme = useTheme();

  const myButtonClass = useStyles({
    color: theme.color,
    padding: spacing,
    margin: 20
  }, [ spacing, theme.color ]);

  return (
    <button className={myButtonClass}>
      {children}
    </button>
  );
}

Basically: 1 class per hook, and use props directly. Pass an array similar to useEffect to control recalculations.

@HenriBeck
Copy link

@Janpot The problem with using props directly is that we wouldn't be able to reuse stylesheets across different component instances as soon as you introduce props.

The second problem with that would be the injection order (this is also the reason why we need createUseStyles function right now).

@vapstor
Copy link

vapstor commented Aug 22, 2020

how can i use a hook from inside a separate style file ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment