【发布时间】:2019-04-02 08:29:15
【问题描述】:
为什么会出现这个错误?
警告:React.createElement:类型无效——需要一个字符串 (对于内置组件)或类/函数(对于复合 组件)但得到:未定义。您可能忘记导出您的 来自定义它的文件中的组件,或者您可能混淆了 默认和命名导入。
我的 PrivateRoute.js 看起来像这样:
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={(props) =>
(Auth.isUserAuthenticated()) ? (
<Component {...props} {...rest} />
) : (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
)
}
/>
);
export default PrivateRoute;
我的导入调用是这样的:
import HomePage from "../homepage/homepage";
import PrivateRoute from "../../modules/privateRoute";
我是这样使用它的:
<PrivateRoute exact path='/' component={HomePage} />
【问题讨论】:
-
检查
<Component {...props} {...rest} />这个组件是否是一个有效的组件。当这个PrivateRoute挂载时 -
console.log(组件);给出未定义的。如何最好地解决这个问题?
-
你能分享这个
PivateRoute的代码吗? -
您是否在
PrivateRoute文件中导入了Component? -
假设 PrivateRoute 只有
'/'路径,您导入/导出主页的方式肯定有问题。如果还有其他使用PrivateRoute的路线,请将它们添加到您的问题中。