Я получаю приведенную ниже ошибку всякий раз, когда пытаюсь использовать makeStyles
с компонентом с методами жизненного цикла (то есть компонентом класса):
Неверный вызов крюка. Хуки могут быть вызваны только внутри тела функционального компонента. Это может произойти по одной из следующих причин:
- У вас могут быть несовпадающие версии React и средства визуализации (например, React DOM)
- Возможно, вы нарушаете правила крючков
- В одном приложении может быть несколько копий React
Ниже приведен небольшой пример кода, который выдает эту ошибку. Другие примеры также присваивают классы дочерним элементам. Я не могу найти ничего в документации MUI, которая показывает другие способы использования makeStyles
и возможность использовать методы жизненного цикла. Нам нужно иметь доступ к методам жизненного цикла и состоянию.
import React, { Component } from 'react';
import { Redirect } from 'react-router-dom';
import { Container, makeStyles } from '@material-ui/core';
import LogoButtonCard from '../molecules/Cards/LogoButtonCard';
const useStyles = makeStyles(theme => ({
root: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
},
}));
const classes = useStyles();
class Welcome extends Component {
render() {
if (this.props.auth.isAuthenticated()) {
return <Redirect to="/" />;
}
return (
<Container maxWidth={false} className={classes.root}>
<LogoButtonCard
buttonText="Enter"
headerText="Welcome to PlatformX"
buttonAction={this.props.auth.login}
/>
</Container>
);
}
}
export default Welcome;