[英]react cannot call a class as a function
I'm only using functional components in my project and despite that, I'm getting this error: Uncaught TypeError: Cannot call a class as a function.我只在我的项目中使用功能组件,尽管如此,我收到了这个错误:未捕获的类型错误:无法将 class 作为 function 调用。
This is part of the parent component where I get the error: (the problem is with the "withCheckCountry" component)这是我收到错误的父组件的一部分:(问题出在“withCheckCountry”组件上)
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/reset-password/:token" component={RestPass} />
<Route path="/programs" component={About} />
<Route path="/login" component={Login}>
{loggedIn() && <Redirect to={redirectionPath()} />}
</Route>
<Route path="/signUp" component={SignUp}>
{loggedIn() && <Redirect to={redirectionPath()} />}
</Route>
<Route
path="/country/:countryCode"
component={withCheckCountry(CountryApp, availableCountry, loadingCountry)}
/>
<Redirect to="/" />
</Switch>
and here is the "withCheckCountry" component:这是“withCheckCountry”组件:
import React, {useState, useEffect, memo} from 'react';
import PropTypes from 'prop-types';
import { Redirect } from 'react-router-dom';
import { toast } from 'react-toastify';
import ToastBody from "components/toastBody/toast";
import { FormattedMessage, injectIntl } from "react-intl";
const withCheckCountry = (Component, availableCountry, loadingCountry) => ({
...props
}) => {
//console.log("props = "+JSON.stringify(props));
if (!loadingCountry) {
const { countryCode } = props.match.params;
const isCountryExist = availableCountry.some(
country => country.countryCode === countryCode.toLocaleUpperCase(),
);
const [errorTitle, setErrorTitle] = useState(intl.formatMessage(messages.errorTitle));
const [countryNotExist, setCountryNotExist] = useState(intl.formatMessage(messages.countryNotExist));
useEffect(() => {
setErrorTitle(intl.formatMessage(messages.errorTitle));
setCountryNotExist(intl.formatMessage(messages.countryNotExist));
}, [intl]);
if (!isCountryExist) {
toast(() => <ToastBody title={errorTitle} message={countryNotExist} />);
return <Redirect to="/" />;
}
}
return <Component {...props} />;
};
withCheckCountry.propTypes = {
availableCountry: PropTypes.object,
};
export default injectIntl(withCheckCountry);
this error didn't show up until I added "injectIntl" when exporting the component, and I need that to get intl from props as you can see in the documentation here if you are interested.这个错误直到我在导出组件时添加了“injectIntl”时才出现,我需要它来从道具中获取 intl,如果您有兴趣,可以在此处的文档中看到。
you are calling "withCheckCountry" component as if it was a function:您正在调用“withCheckCountry”组件,就好像它是 function:
try this:尝试这个:
<Route path="/country/:countryCode" component={(props) => <withCheckCountry {...props} />} />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.