基于布尔状态更改,我尝试更改组件的样式,但由于某种原因,它仅在页面刷新后显示更改。
在我的父应用程序组件中,我执行以下操作:
import React from "react";
import Layout from "./Layout";
export default function App() {
const [loading, setLoading] = React.useState(true);
React.useEffect(() => {
setTimeout(() => {
setLoading(!loading);
}, 2000);
}, [loading]);
return <Layout loading={loading} />;
}
我的Layout组件捕获这个loading变量并将其发送到makeStyles钩子,
import React from "react";
import { makeStyles } from "@material-ui/core";
const useStyles = makeStyles((theme) => ({
root: {},
wrapper: ({ loading }) => ({
paddingTop: 64,
[theme.breakpoints.down("lg")]: {
paddingLeft: loading ? 0 : 100
}
})
}));
const Layout = React.memo(({ loading }) => {
const classes = useStyles({ loading });
return (
<div className={classes.root}>
<div>side</div>
<div className={classes.wrapper}>
is loading: {JSON.stringify(loading)}
</div>
</div>
);
});
export default Layout;
执行console.log后wrapper: ({ loading }) => ({打印正确的值loading,但样式没有改变。
这里发生了什么?
GCT1015
相关分类