Skip to content

Instantly share code, notes, and snippets.

@kof
Last active November 23, 2021 08:13
Show Gist options
  • Select an option

  • Save kof/43ac135686c71c536deb0db61b94e6e3 to your computer and use it in GitHub Desktop.

Select an option

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

Janpot commented Nov 2, 2018

Copy link
Copy Markdown

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
Copy Markdown

@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

vapstor commented Aug 22, 2020

Copy link
Copy Markdown

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