class SimpleTabs extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedButton: false,
value: 0
};
// const classes = useStyles();
// const [value, setValue] = React.useState(0);
}
handleChange = (event, newValue) => {
// const classes = useStyles();
console.log("handleChange--->");
const [value, setValue] = React.useState(0);
setValue(newValue);
};
render() {
//const classes = useStyles();
const { classes } = this.props;
// const [value, setValue] = React.useState(0);
return (
<div className={classes.root}>
<AppBar position="static">
<Tabs value={this.state.value} onChange={this.handleChange}>
<Tab label="Item One" />
<Tab label="Item Two" />
<Tab label="Item Three" />
</Tabs>
</AppBar>
{this.state.value === 0 && <TabContainer>Item One</TabContainer>}
{this.state.value === 1 && <TabContainer>Item Two</TabContainer>}
{this.state.value === 2 && <TabContainer>Item Three</TabContainer>}
</div>
);
}
}
export default withStyles(styles)(SimpleTabs);
答案 0 :(得分:2)
您不能在类组件内部使用挂钩,而只能在功能组件内部使用挂钩。而是使用this.state和this.setState。
handleChange = (event, newValue) => {
this.setState({
value: newValue;
});
};
或者,您可以将组件重写为功能组件(我省略了选择的按钮,因为我看不到它在任何地方使用过):
const SimpleTabs = (props) => {
const { classes } = props;
const [value, setValue] = useState(0);
const handleChange = useCallback((event, newValue) => {
setValue(newValue);
}, [])
return (
<div className={classes.root}>
<AppBar position="static">
<Tabs value={value} onChange={handleChange}>
<Tab label="Item One" />
<Tab label="Item Two" />
<Tab label="Item Three" />
</Tabs>
</AppBar>
{value === 0 && <TabContainer>Item One</TabContainer>}
{value === 1 && <TabContainer>Item Two</TabContainer>}
{value === 2 && <TabContainer>Item Three</TabContainer>}
</div>
);
}