【发布时间】:2019-08-27 07:23:21
【问题描述】:
我对反应比较陌生。我一直在尝试为下面的手风琴扩展面板创建一个功能格式的类组件。我无法根据类组件更改 handleChange 事件。我已经尝试了所有可能的方法,但我失败了。
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import ExpansionPanel from '@material-ui/core/ExpansionPanel';
import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
const useStyles = makeStyles(theme => ({
}));
export default function ControlledExpansionPanels() {
const classes = useStyles();
const [expanded, setExpanded] = React.useState(false);
const handleChange = panel => (event, isExpanded) => {
setExpanded(isExpanded ? panel : false);
};
return (
<div className={classes.root}>
<ExpansionPanel expanded={expanded === 'panel1'} onChange={handleChange('panel1')}>
<ExpansionPanelSummary
expandIcon={<ExpandMoreIcon />}
aria-controls="panel1bh-content"
id="panel1bh-header"
>
</ExpansionPanelSummary>
<ExpansionPanelDetails>
</ExpansionPanelDetails>
</ExpansionPanel>
<ExpansionPanel expanded={expanded === 'panel2'} onChange={handleChange('panel2')}>
<ExpansionPanelSummary
expandIcon={<ExpandMoreIcon />}
aria-controls="panel2bh-content"
id="panel2bh-header"
>
</ExpansionPanelSummary>
<ExpansionPanelDetails>
</ExpansionPanelDetails>
</ExpansionPanel>
</div>
);
}
请帮忙!
【问题讨论】:
-
useStyles 是你的自定义钩子吗?
-
@AtinSingh 我相信这是来自material ui => material-ui.com/styles/api的钩子
-
好的,让我检查一下
-
@DamianBusz 刚刚检查过了。钩子是在主组件外部声明的,因此保持其他代码不变,我们可以将类 const 转移到 render 中。但是我还是不明白你为什么要把这个功能组件转换成类
-
@AtinSingh 这是一个很好的问题,我个人会把它作为功能组件。
标签: reactjs event-handling material-ui react-state