当前位置: 首页 > 知识库问答 >
问题:

从布局的其余部分分离的路线-反应

羊慈
2023-03-14

我有一个应用程序,我想添加一个管理页面。我希望管理页面有自己的布局从客户端布局分开。以我现有的情况来看,实现这一目标的当前“最佳”方式是什么?

app.js

import './App.css';
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import HomePage from './pages/HomePage';
import ItemDetailPage from './pages/ItemDetailPage';
import Header from './components/Header';
import Footer from './components/Footer';
import CollectionPage from './pages/CollectionPage';
import AdminPage from './pages/AdminPage';

function App() {
  return (
    <Router>
      {/* Admin app routes */}
        {/* <Route exact path="/admin" component={AdminPage}/> */}
      {/* Client app routes */}
      <div className="app">
        <Header />
        <Switch>
          <Route exact path="/" component={HomePage}/>
          <Route exact path="/item/:itemID" component={ItemDetailPage}/>
          <Route exact path="/collections/:collection" component={CollectionPage}/>
        </Switch>
        <Footer />
    </div>
    </Router>
    
  );
}

export default App;

HOC

export default function ClientLayoutHOC(props) {
    const {component: Component, ...rest} = props;
    return (
        <div className="app">
            <Header />
                {/*<Component {...rest}/> */}
                {props.children}
            <Footer />
        </div>
    )
}

我找到了这个。我应该创建一个AdminLayoutClientLayout组件并过滤页面吗?

共有1个答案

柴深
2023-03-14

您可以创建一个高阶组件,并将其添加到非管理员页面,如下所示:HOC可以包含div包装器以及页眉和页脚。

然后所有路由在路由器中保持干净。开关

下面的HOC、HomePage、ItemDetailPage和CollectionPage的匿名函数是您将对这些组件进行更改的示例。HOC组件也将是一个单独的组件。

const HOC = (props) => {
    const {component: Component, ...rest} = props;
    return (
        <div className="app">
            <Header/>
            <Component {...rest}/>
            <Footer/>
        </div>
    )
}

const HomePage = (props) => {
    return (
        <HOC>
            {/* replace with HomePage content*/}
        </HOC>
    )
}

const ItemDetailPage = (props) => {
    return (
        <HOC>
            {/* replace with ItemDetailPage content*/}
        </HOC>
    )
}

const CollectionPage = (props) => {
    return (
        <HOC>
            {/* replace with CollectionPage content*/}
        </HOC>
    )
}

function App() {
    return (
        <Router>
            <Switch>
                {/* Admin app routes */}
                <Route exact path="/admin" component={AdminPage}/>
                {/* Client app routes */}
                <Route exact path="/" component={HomePage} />
                <Route exact path="/item/:itemID" component={ItemDetailPage}/>
                <Route exact path="/collections/:collection" component={CollectionPage}/>
            </Switch>
        </Router>

    );
}

在查看添加的HOC代码时,我建议进行以下更改:

export default function ClientLayoutHOC(props) {
    const {component: Component, children, ...rest} = props;
    return (
        <div className="app">
            <Header />
                <Component {...rest}>
                    {children}
                </Component>
            <Footer />
        </div>
    )
}
 类似资料:
  • 我需要从获取一些数据,并在中显示这些数据。我成功地从API获得了,但这只是数据的一部分,还有更多。如何获取的其余部分?是否应该在客户端处理?我是否应该使用不同的URL来获取更多数据?提前谢谢你。

  • 什么是Gateway Worker分离部署 GatewayWorker有三种进程,Gateway进程负责网络IO,BusinessWorker进程负责业务处理,Register进程负责协调Gateway与BusinessWorker之间建立TCP长连接通讯。我们可以把Gateway BusinessWorker Register分开部署在不同的服务器上,当业务进程BusinessWorker出现瓶

  • 问题内容: 是否有与之等效或替代的 它给出以下错误 系统类型中的方法getProperty(String,String)不适用于参数(String) 问题答案: 我认为您需要在服务器端代码中执行并使用RPC或任何其他服务器端gwt通信技术来访问它。 检查GWT JRE仿真: GWT包含一个模仿Java运行时库子集的库。下面的列表显示了GWT可以自动转换的JRE软件包,类型和方法的集合。请注意,在某

  • 问题内容: 我有一个Google Maps应用程序占据了大部分页面。但是,我需要为菜单栏保留最上方的空间。如何使地图div自动填充其垂直空间? 不起作用,因为顶部栏随后会将地图推到页面底部。 问题答案: 您可以使用绝对定位。 HTML CSS 通过绝对定位并指定top,right,bottom和left属性,您将获得一个div占用整个视口。 然后,设置上为> =的高度。 最后,将其放置在内部并进行

  • 问题内容: 我有以下SQL: 在Oracle SQL Developer 4.0.0.13(连接到DB2数据库)中,我在以下斜体下面显示了 一条弯曲的 行:“ from pluspbillline ”和“ left external join workorder ”。 警告说:“ pluspbillline已与连接图的其余部分断开连接”。这是什么意思? 问题答案: 我不确定是什么原因导致Oracl

  • 本文向大家介绍clojure 将序列的其余部分转换为图,包括了clojure 将序列的其余部分转换为图的使用技巧和注意事项,需要的朋友参考一下 示例 解构还使您能够将序列解释为图: 这对于使用命名参数定义函数很有用: