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

Semantic UI React侧边栏路由组件重叠问题求助(无需CSS外边距)

问题描述

使用Semantic UI React的Sidebar组件时,点击Home菜单通过React Router路由到Home组件后,Home组件显示在侧边栏后方,希望它能显示在侧边栏右侧,且不想使用CSS左外边距解决该问题。

相关代码

import React from 'react'
import { Menu, Sidebar } from 'semantic-ui-react'
import { Link } from 'react-router-dom'

const SidebarExampleVisible = () => {
  return(
    <Sidebar
      as={Menu}
      vertical
      visible
      width='thin'
    >
      <Menu.Item as='a'>
        <Link to='/components/Home'>Home</Link>
      </Menu.Item>
      <Menu.Item as='a'>
        Games
      </Menu.Item>
      <Menu.Item as='a'>
        About
      </Menu.Item>
    </Sidebar>
  )
}

export default SidebarExampleVisible

Home.jsx

import React from 'react'
import { Tab } from 'semantic-ui-react'

const panes = [
  {
    menuItem: 'Tab 1',
    render: () => <Tab.Pane attached={false}>Tab 1 Content</Tab.Pane>,
  },
  {
    menuItem: 'Tab 2',
    render: () => <Tab.Pane attached={false}>Tab 2 Content</Tab.Pane>,
  },
  {
    menuItem: 'Tab 3',
    render: () => <Tab.Pane attached={false}>Tab 3 Content</Tab.Pane>,
  },
]

const TabExamplePointing = () => <Tab menu={{ pointing: true }} panes={panes} />

export default TabExamplePointing
解决方案

Semantic UI React的Sidebar组件自带配套布局组件,可直接处理侧边栏与主内容的位置关系,无需手动添加CSS外边距。你需要用Sidebar.Pushable作为父容器,并用Sidebar.Pusher包裹路由内容区域,主内容会自动被推到侧边栏右侧。

修改主布局组件(如App.js)示例如下:

import React from 'react'
import { Sidebar } from 'semantic-ui-react'
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
import SidebarExampleVisible from './Sidebar/Sidebar'
import TabExamplePointing from './Home'

function App() {
  return (
    <Router>
      <Sidebar.Pushable>
        <SidebarExampleVisible />
        <Sidebar.Pusher>
          <Routes>
            <Route path="/components/Home" element={<TabExamplePointing />} />
            {/* 其他路由配置 */}
          </Routes>
        </Sidebar.Pusher>
      </Sidebar.Pushable>
    </Router>
  )
}

export default App

说明

  • Sidebar.Pushable:作为侧边栏与主内容的顶层容器,负责管理两者的布局逻辑。
  • Sidebar.Pusher:包裹主内容区域,会自动根据侧边栏的状态调整自身位置,确保内容始终显示在侧边栏右侧。

内容的提问来源于stack exchange,提问作者Ranga chimalgi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:15:30