@AI-93s

Как передать state в другую компоненту?

У меня есть компонента Header и DarkTheme, в Header есть переключатель (Switch) который должен менять state darkMode в DarkTheme. Как я могу это сделать?

Header

const useStyles = makeStyles((theme: Theme) =>
    createStyles({
        root: {
            flexGrow: 1
        },
        menuButton: {
            marginRight: theme.spacing(2),
            color: '#fff'
        },
        title: {
            flexGrow: 1,
            color: '#fff',
            textAlign: 'center'
        },
        header: {
            color: '#fff',
            background: '#9CC525'
        }
    }),
);

export const Header = (props: any) => {

    const classes = useStyles();

    const [darkMode, setDarkMode] = useState(false);
    
    return (
        <div>
            <div>
                <AppBar position="static" >
                    <Toolbar className={classes.header}>
                        <IconButton edge="start" className={classes.menuButton} color="inherit" aria-label="menu">
                            <MenuIcon />
                        </IconButton>
                        <img src={logo} alt='logo' />
                        <Typography variant="h2" className={classes.title}>
                            Особистий кабінет
                        </Typography>
                        <Switch color="default" checked={darkMode} onChange={() => setDarkMode(!darkMode)} />
                        <Button color="inherit">
                            Вход
                        </Button>
                    </Toolbar>
                </AppBar>

            </div>
        </div >
    )
};


DarkTheme

export default function DarkTheme({ children }: any) {

    const [darkMode, setDarkMode] = useState(false);
    
    const lightTheme = createMuiTheme({});

    const darkTheme = createMuiTheme({
        palette: {
            type: 'dark'
        }
    });

    return (
        <div>
            <ThemeProvider theme={darkMode ? darkTheme : lightTheme}>
                <Paper square elevation={0} style={{ height: "100vh" }}>
                    <Switch color="default" checked={darkMode} onChange={() => setDarkMode(!darkMode)} />
                    {children}
                </Paper>
            </ThemeProvider>
        </div>
    )
}
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы