You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React应用如何为指定路由移除SideBar?以/visual路由为例

解决方案

你可以通过获取当前路由路径,判断是否为/visual来控制SideBar的显隐,针对你当前使用react-router-dom v5的类组件代码,最小改动的实现方式如下:

import React, { Component } from 'react';
import { BrowserRouter as Router, Route, withRouter } 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'

// 抽离Router内部的布局组件,用withRouter包裹获取路由属性
const Layout = withRouter(({ location }) => {
  return (
    <div className="wrapper">
      <Route exact path="/visual" component={Visual} />
      {/* 路径不是/visual的时候才渲染侧边栏 */}
      {location.pathname !== '/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>
  )
})

class App extends Component {
  render() {
    return (
      <div className="App">
        <Router>
          <Layout />
        </Router>
      </div>
    );
  }
}

export default App;

如果你不想抽离组件,也可以直接通过Route的render属性控制侧边栏显隐,仅需替换原代码中<SideBar />一行即可:

{/* 匹配非/visual的指定路由时渲染侧边栏 */}
<Route path={["/", "/home", "/inference", "/new"]} exact render={() => <SideBar />} />

注意:如果你后续升级到react-router-dom v6版本,可以直接在函数组件中调用useLocation()钩子获取当前路径,判断逻辑和上述方案一致。

内容的提问来源于stack exchange,提问作者Karthikeyan M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:05