Reactjs 使用材质UI时,无法从全局状态(REDUX)获取更新的值
当我有材料UI代码时,我无法获取isAuthenticated的更新状态。 当我有材料UI代码时,是否有任何方法可以更新状态Reactjs 使用材质UI时,无法从全局状态(REDUX)获取更新的值,reactjs,redux,material-ui,Reactjs,Redux,Material Ui,当我有材料UI代码时,我无法获取isAuthenticated的更新状态。 当我有材料UI代码时,是否有任何方法可以更新状态 import React from "react"; import clsx from "clsx"; import { withStyles } from "@material-ui/core/styles"; import MUILink from "@material-ui/core/Link"; import AppBar from "../UI/componen
import React from "react";
import clsx from "clsx";
import { withStyles } from "@material-ui/core/styles";
import MUILink from "@material-ui/core/Link";
import AppBar from "../UI/components/AppBar";
import Toolbar, { styles as toolbarStyles } from "../UI/components/Toolbar";
import { Link } from "react-router-dom";
import { connect } from 'react-redux';
const styles = theme => ({
title: {
fontSize: 24
},
placeholder: toolbarStyles(theme).root,
toolbar: {
justifyContent: "space-between"
},
left: {
flex: 1
},
leftLinkActive: {
color: theme.palette.common.white
},
right: {
flex: 1,
display: "flex",
justifyContent: "flex-end"
},
rightLink: {
fontSize: 16,
color: theme.palette.common.white,
marginLeft: theme.spacing(3)
},
linkSecondary: {
color: theme.palette.secondary.main
}
});
const Navbar = (props,{isAuthenticated,loading}) => {
const { classes } = props;
const authLinks = (
<div className={classes.right}>
<MUILink
variant="h6"
underline="none"
component={Link} to="/log-out"
className={clsx(classes.rightLink, classes.linkSecondary)}
>
{"Log out"}
</MUILink>
</div>
);
const guestLinks = (
<div className={classes.right}>
<MUILink
color="inherit"
variant="h6"
underline="none"
component={Link} to="/sign-in"
className={classes.rightLink}
>
{"Sign In"}
</MUILink>
<MUILink
variant="h6"
underline="none"
component={Link} to="/sign-up"
className={clsx(classes.rightLink, classes.linkSecondary)}
>
{"Sign Up"}
</MUILink>
</div>
);
return (
<div>
<AppBar position="fixed">
<Toolbar className={classes.toolbar}>
<div className={classes.left} />
<MUILink
variant="h6"
underline="none"
color="inherit"
className={classes.title}
component={Link} to="/"
>
{"buzzer"}
</MUILink>
{!loading && (
<React.Fragment>{isAuthenticated ? authLinks : guestLinks}</React.Fragment>
)}
</Toolbar>
</AppBar>
<div className={classes.placeholder} />
</div>
);
};
const mapStateToProps = state =>({
isAuthenticated:state.auth.isAuthenticated,
loading:state.auth.loading
})
export default connect(mapStateToProps)((withStyles(styles)(Navbar)));
从“React”导入React;
从“clsx”导入clsx;
从“@material ui/core/styles”导入{withStyles}”;
从“@material ui/core/Link”导入MUILink;
从“./UI/components/AppBar”导入AppBar;
从“./UI/components/Toolbar”导入工具栏,{styles as toolbarStyles};
从“react router dom”导入{Link};
从'react redux'导入{connect};
常量样式=主题=>({
标题:{
字体大小:24
},
占位符:工具栏样式(主题).root,
工具栏:{
为内容辩护:“之间的空间”
},
左:{
弹性:1
},
leftLinkActive:{
颜色:theme.palette.common.white
},
对:{
弹性:1,
显示:“flex”,
辩护内容:“柔性端”
},
rightLink:{
尺寸:16,
颜色:theme.palette.common.white,
marginLeft:主题。间距(3)
},
linkSecondary:{
颜色:theme.palete.secondary.main
}
});
常量导航栏=(道具,{isAuthenticated,loading})=>{
常量{classes}=props;
常量authLinks=(
{“注销”}
);
const guestLinks=(
{“登录”}
{“注册”}
);
返回(
{“蜂鸣器”}
{!正在加载&&(
{isAuthenticated?authLinks:guestLinks}
)}
);
};
常量mapStateToProps=状态=>({
isAuthenticated:state.auth.isAuthenticated,
加载:state.auth.loading
})
导出默认连接(mapStateToProps)((带样式(样式)(导航栏));
我希望导航栏根据已验证的条件进行更改。如果用户经过身份验证,我只想显示authLink,如果用户没有经过身份验证,我想显示guestLink。
{isAuthenticated,loading}
将被注入道具中,而不是作为第二个参数:
const Navbar = (props) => {
const { classes, isAuthenticated,loading } = props;
你是救命恩人。非常感谢。