import React from 'react'; import { ThemeProvider, useTheme, makeStyles, createStyles } from '@material-ui/core/styles'; interface MyTheme { color: string; } interface ComponentProps { backgroundColor: string; } const useStyles = makeStyles((theme: MyTheme) => createStyles({ root: (props: ComponentProps) => ({ backgroundColor: props.backgroundColor, color: theme.color, }), }), ); const Component = React.memo((props: ComponentProps) => { const classes = useStyles(props); const theme = useTheme(); const rendered = React.useRef(1); React.useEffect(() => { rendered.current += 1; }); return (
rendered {rendered.current} times
color: {theme.color}
backgroundColor: {props.backgroundColor}
); }); export default function StressTest() { const [backgroundColor, setBackgroundColor] = React.useState('#2196f3'); const handleBackgroundColorChange = (event: React.ChangeEvent) => { setBackgroundColor(event.target.value); }; const [color, setColor] = React.useState('#ffffff'); const handleColorChange = (event: React.ChangeEvent) => { setColor(event.target.value); }; const theme = React.useMemo(() => ({ color }), [color]); return (
); }