I am new to React and Now I would like to show some record in the table and now I got this error. Help me, please.
Invalid hook call. Hooks can only b
React linter assumes every method starting with use
as hooks and hooks doesn't work inside classes. by renaming const useStyles
into anything else that doesn't starts with use
like const myStyles
you are good to go.
Update:
makeStyles
is hook api and you can't use that inside classes. you can use styled components API. see here
You can use "export default" by calling an Arrow Function that returns its React.Component by passing it through the MaterialUI class object props, which in turn will be used within the Component render ().
class AllowanceClass extends Component{
...
render() {
const classes = this.props.classes;
...
}
}
export default () => {
const classes = useStyles();
return (
<AllowanceClass classes={classes} />
)
}
complementing the following comment
For those who use redux:
class AllowanceClass extends Component{
...
render() {
const classes = this.props.classes;
...
}
}
const COMAllowanceClass = (props) =>
{
const classes = useStyles();
return (<AllowanceClass classes={classes} {...props} />);
};
const mapStateToProps = ({ InfoReducer }) => ({
token: InfoReducer.token,
user: InfoReducer.user,
error: InfoReducer.error
});
export default connect(mapStateToProps, { actions })(COMAllowanceClass);
In my case, I was trying to use mdbreact on windows. Though it installed, But i was getting the above error. I had to reinstall it and everything was ok. It happened to me once two with antd Library
For me , the error was calling the function useState outside the function default exported
My case.... SOLUTION in HOOKS
const [cep, setCep] = useState('');
const mounted = useRef(false);
useEffect(() => {
if (mounted.current) {
fetchAPI();
} else {
mounted.current = true;
}
}, [cep]);
const setParams = (_cep) => {
if (cep !== _cep || cep === '') {
setCep(_cep);
}
};