Invalid hook call. Hooks can only be called inside of the body of a function component

后端 未结 14 1434
滥情空心
滥情空心 2020-12-03 09:25

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

相关标签:
14条回答
  • 2020-12-03 09:55

    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

    0 讨论(0)
  • 2020-12-03 09:56

    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} />
        )
    }
    
    0 讨论(0)
  • 2020-12-03 10:00

    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);
    
    0 讨论(0)
  • 2020-12-03 10:01

    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

    0 讨论(0)
  • 2020-12-03 10:02

    For me , the error was calling the function useState outside the function default exported

    0 讨论(0)
  • 2020-12-03 10:02

    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);
        }
    };
    
    0 讨论(0)
提交回复
热议问题