【发布时间】:2023-01-15 02:37:24
【问题描述】:
我的旧方法:
<Route
key={i}
path={path}
render={(props) => {
if (!localStorage.getItem("token")) {
<Redirect
to={{ pathname: "/login", state: { from: props.location } }}
/>
}
return (
<AuthLayout>
<Component {...props} />
</AuthLayout>
);
}}
/>
用新的 element 替换 render 给我:
函数作为 React 子项无效。如果您返回一个组件而不是从渲染中返回,则可能会发生这种情况
显然,新的 API 只是期望:
<Route key={i} path={path} element={ <Component /> } />我真正想要完成的是动态渲染组件:
{authProtectedRoutes.map(({ path, Component }, i) => { <Route key={i} path={path} element={ // If no auth token, redirect to login if (!token) { <Navigate to="/login" /> } else { <AuthLayout> <Component /> </AuthLayout> } } /> })}不知道该怎么做...
编辑:
我的组件数组是这样的:
const authProtectedRoutes = [ { path: "/dashboard", Component: Dashboard }, { path: "/pages-starter", Component: StarterPage },当我尝试在循环中返回
Component时,我得到:React.jsx:类型无效——需要一个字符串(用于内置 组件)或类/函数(对于复合组件)但得到: 不明确的。您可能忘记从文件中导出您的组件 它在中定义,或者您可能混淆了默认导入和命名导入。
【问题讨论】: