如何在一个反应​​应用程序中处理两个菜单

Posted

技术标签:

【中文标题】如何在一个反应​​应用程序中处理两个菜单【英文标题】:How to handle two menus in one react application 【发布时间】:2021-05-09 18:18:20 【问题描述】:

我正在开发应用程序,其中应用程序有两部分,一是面向公共用户和面向管理员用户。我完成了公共方面的工作,但现在我在管理方面面临问题,因为当我为管理员呈现我的第二个菜单时,公共方面的菜单也显示出来了。有人可以帮我如何处理第二个菜单让假设如果用户点击(/admin/home)然后我需要显示第二个菜单如果用户点击(/home)那么我想显示 Ist 菜单。

管理员路由

  <TopMenu>
            <PrivateRoute
              exact
              auth=auth
              path="/dashboard"
              currentUser="admin" || null
              roles=["admin"]
              component=Dashboard
            />
          </TopMenu>

 

公共路线

  <Route exact path="/" render=(props) => <Home ...props /> />
        <Route
          exact
          path="/about"
          render=(props) => <About ...props />
        />
        <Route
          exact
          path="/contact"
          render=(props) => <Contact ...props />
        />

【问题讨论】:

您是否尝试过在组件的渲染函数中进行条件渲染?每个页面都可以是它自己的组件,而这些组件又由较小的组件构建。当你在管理页面时,只渲染你需要的组件。 希望看到更多代码。尝试抽象出有关“admin”和“public”的详细信息以及特定于应用程序业务的其他详细信息。您面临的技术问题是什么。 【参考方案1】:

创建一个私有路由文件并检查用户是否通过身份验证,如果是,则显示该组件,如果不是,则重定向到其他路由 你可以这样做或实现你自己的方式

import React from 'react';
import  Route, Redirect  from 'react-router-dom';
export const PrivateRoute = (
  isAuthenticated,
  component: Component,
  ...rest
) => (
    <Route ...rest component=(props) => (
      isAuthenticated ? (
        <div>
          <Component ...props />
        </div>
      ) : (
          <Redirect to="/" />
        )
    ) />
  );


export default PrivateRoute

在主路由文件中,您可以导入私有路由并像这样使用它

import PublicRoute from './routers/PublicRoute';
import Appp from './components/Appp';
import PrivateRoute from './routers/PrivateRoute';
const store = configureStore();
function App() 
  return (
    <div className="App">
      <Provider store=store>
        <Switch>
          <PublicRoute path="/" component=HomePage exact=true />
          <PrivateRoute path="/yourPrivateRoute" component=yourComponent/>


        </Switch>
      </Provider>
    </div>
  );

export default App;

【讨论】:

以上是关于如何在一个反应​​应用程序中处理两个菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何在主页中打开后退按钮 android 以退出应用程序并关闭反应本机导航侧菜单

javaFx中的事件处理程序用于菜单

如何在反应中处理进口地狱?

如何将香草转换为反应钩子切换菜单

如何在反应中处理全球用户/用户数据?

在新窗口中打开的反应导航栏菜单项