Удалите боковую панель для определенного маршрута.

#reactjs

Вопрос:

Я хочу удалить боковую панель для одного маршрута в своем приложении react. я не хотел, чтобы эта боковая панель на моем конкретном маршруте называлась «Визуальной». Любая помощь от вас, ребята, была бы очень признательна за мой код:

 import React, { Component } from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import Home from "./components/Home";
import SideBar from "./components/Sidebar";

import Apps from './components/login'
import Inference from './components/drop';
import New from './components/new'
import Visual from './components/visual'
class App extends Component {
  render() {
    return (
      <div className="App">
             <Router>
        <div className="wrapper">
        <Route exact path="/visual" component={Visual} />
          <SideBar  />
          
           
            <Route exact path="/home" component={Home} />
          
          <Route exact path="/inference" component={Inference} />
          <Route exact path="/" component={Apps} />
          <Route exact path="/new" component={New} />
          
 
        </div>
      </Router>
      </div>
    );
  }
}

export default App;
 

Ответ №1:

Это будет проще реализовать, если у вас есть Layout компонент с боковой панелью. Например, компонент компоновки будет выглядеть следующим образом

 const Layout = ({ children }) => {
  return (
    <div className="wrapper">
      <Sidebar />
      <main className="content">{children}</main>
    </div>
  );
}
 

Таким образом, маршруты, для которых требуется Sidebar , могут быть обернуты Layout компонентом. Например, ваш домашний маршрут будет

 class Home extends Component {
  render() {
    return (
      <Layout>
        Home page content/JSX
      </Layout>
    );
  }
}
 

Таким образом, боковая панель будет отображаться только для маршрутов, использующих Layout компонент.

Ответ №2:

Вы можете получить свой текущий путь, используя useLocation крюк, который react-router-dom его предоставляет. Вы можете просматривать маршруты, которые вы посещаете, и, пока вы доберетесь до того, который вы не хотите показывать, что-то возвращает значение null вместо компонента.

 const DummyComponent = () => {
  const { pathname } = useLocation();
  if (pathname === '/somewhere') return null;
  return (
    <div>This is my component</div>
  );
}
 

Я думаю, что это сработает для тебя