【发布时间】:2021-07-12 09:06:30
【问题描述】:
React 和 javascript 相对较新,但正在尝试组织一个项目,其中一些路由从不同的常量中提取,因此我可以在另一个文件中使用它们,以便有人可以在单独的模块上开发和测试,而无需完整的应用程序(伪微前端类型的东西)。这可能是过度设计,但基本上,当我将路由放入 const 并从其他地方引用它们时,我的 const 引用下方的任何路由都只会加载空白页面而不是组件或 html。
任何指导将不胜感激。
(react 17.0.2 和 react-router-dom 5.1.2)
routes.js):
import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
import * as Yup from 'yup';
import Location from 'app-location';
import * as profile from '@profile-views';
import * as view from "modules/app/views";
...
const PROFILE_ROOT = `/profile`;
const userId = Yup.string();
/* Profile Routes */
export const Profile = new Location(
`${PROFILE_ROOT}/:userId`,
{
userId: userId.required()
}
);
export const ProfileContactInfo = new Location(
`${Profile.path}/contact`,
{ userId: userId.required()},
);
export const ProfileCalendar = new Location(
`${Profile.path}/calendar`,
{ userId: userId.required()},
);
...
export const renderRoutes = (
<>
{/* everything works if Route components are in Routes() */}
<Route exact path={Profile.path} component={profile.Timeline}/>
<Route path={ProfileCalendar.path} component={profile.Calendar}/>
<Route path={ProfileContactInfo.path} component={profile.ContactInfo}/>
</>
)
export default function Routes() {
return (
<BrowserRouter>
<Switch>
<Route path="/login" component={view.Login} />
{ renderRoutes }
{/* EVERYTHING ABOVE WORKS */}
{/* EVERYTHING BELOW renderRoutes DOES NOT WORK */}
{/* everything below works if i remove renderRoutes */}
{/* everything works if i copy Routes from renderRoutes here */}
<Route path="/create-user" component={view.CreateUser} />
<Route path="/404" component={() => <h1>Not Found!</h1>} />
<Redirect to="/404" />
</Switch>
</BrowserRouter>
);
}
App.js:
import Routes from "./routes";
...
function App() {
return (
<UserProvider>
<Routes />
</UserProvider>
);
}
【问题讨论】:
-
您能否编辑帖子并提供 Profile.path 的值,例如您已导入的内容,以便我们更好地理解问题
标签: reactjs react-router