我一直在将类组件转换为函数,但由于发生钩子错误,我无法使用导出默认值。我敢肯定这很简单,但找不到所需的答案。
这是导致错误的代码:
import React from 'react'
import {AppBar, Toolbar, Button, Typography, makeStyles} from '@material-ui/core'
import { connect } from 'react-redux'
import { Link } from 'react-router-dom'
import Menu from './Menu'
const useStyles = makeStyles((theme) => ({
header: {
backgroundColor: "#1d3834",
},
root: {
flexGrow: 1,
},
menuButton: {
marginRight: theme.spacing(2),
},
title: {
flexGrow: 1,
},
}))
function Header(props) {
const classes = useStyles()
const renderContent = () => {
switch (props.auth) {
case null:
return
case false:
return (
<Button color="inherit" href="/signin">Sign In</Button>
)
default:
return (
<Button color="inherit" href="/api/logout">Sign Out</Button>
)
}
}
return(
<div className={classes.root}>
<AppBar position="static" className={classes.header}>
<Toolbar>
<Menu/>
<Typography variant="h6" className={classes.title} >
<Link
to={props.auth ? '/items' : '/'}
className="left brand-logo"
>
</Link>
</Typography>
{renderContent()}
</Toolbar>
</AppBar>
</div>
);
}
function mapStateToProps({auth}) {
return{ auth }
}
export default connect(mapStateToProps)(makeStyles(useStyles) (Header))
我希望以前有人遇到过类似的问题,并且能够给我一些反馈,谢谢:)
主要问题是如何使用export
组件。请尝试以下操作:
export default connect(mapStateToProps)(Header)
您实际上并不需要makeStyles(useStyles)
那里的零件。
+1建议-与问题无关:
这个建议与问题本身无关,只是我喜欢makeStyles
用Material-UI组织代码存储库中的内容的一个小改进。
通常,我styles.tsx
会在您的情况下创建一个如下所示的,放在您的组件文件旁边:
import { makeStyles } from "@material-ui/core"
const useStyles = makeStyles((theme) => ({
header: {
backgroundColor: "#1d3834",
},
root: {
flexGrow: 1,
},
menuButton: {
marginRight: theme.spacing(2),
},
title: {
flexGrow: 1,
},
}))
export default useStyles
然后import
在组件中如下所示:
import useStyles from "./styles"
用法与组件中的用法类似:
function Header(props) {
const classes = useStyles()
// ... rest of your component
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句