【发布时间】:2021-12-31 17:53:17
【问题描述】:
我有这样的路线:
export enum routes {
PROFILE_SETTINGS = "/settings/profile",
ACCOUNT_SETTINGS = "/settings/account",
PASSWORD_CHANGE = "/settings/account/password",
ACCOUNT_DELETE = "/settings/account/delete",
EMAIL_CHANGE = "/settings/account/email",
USER_COMMENTS = "/profile/:user/comments",
USER_PRODUCTS = "/profile/:user/products",
}
<BrowserRouter>
<ThemeProvider theme={theme}>
<CommunicatorTemplate>
<MainTemplate>
<Switch>
<ProfileTemplate>
<Route
exact
path={routes.USER_COMMENTS}
component={UserComments}
/>
<Route
exact
path={routes.USER_PRODUCTS}
component={UserProducts}
/>
</ProfileTemplate>
<SettingsTemplate>
<Route
exact
path={routes.PROFILE_SETTINGS}
component={ProfileSettings}
/>
<Route
exact
path={routes.ACCOUNT_SETTINGS}
component={AccountSettings}
/>
<Route
path={routes.PASSWORD_CHANGE}
component={PasswordChange}
/>
<Route path={routes.EMAIL_CHANGE} component={EmailChange} />
<Route path={routes.ACCOUNT_DELETE} component={AccountDelete} />
</SettingsTemplate>
</Switch>
</MainTemplate>
</CommunicatorTemplate>
</ThemeProvider>
</BrowserRouter>
问题是,当我转到任何以 /settings 开头的页面时,我会被重定向到 Profile 页面而不是 f.e. PROFILE_SETTINGS 或 ACCOUNT_SETTINGS。我认为问题出在/settings/profile,因为它也有/profile 部分,但我该如何解决?
【问题讨论】:
-
尝试重现一个更简单的例子,这样更容易隔离问题
-
能否请您添加其他代码来详细说明您的模板组件?并请提供路由器声明的应用程序的根目录。也许你的组件中有一个循环或类似的东西
-
这是根。我不认为模板代码有用,因为就像:
<Wrapper>{children}</Wrapper>. -
我刚刚添加了整个根组件
-
即使我从模板中删除路由,它也会将我重定向到配置文件模板
标签: javascript reactjs react-router react-router-dom