【发布时间】:2021-11-08 04:05:20
【问题描述】:
我有 2 个组件:
当我得到它如下:
Sidebar.js:
import { useHistory } from 'react-router-dom';
function Sidebar(){
let history = useHistory();
let SidebarClick = () =>{
history.push("/some/link");
};
return(
<div className="main_div">
<div className="children_wrapper">
<div className="div_item">
abc
</div>
</div>
</div>
);
}
export default Sidebar;
在 Sidebar.scss 中:
.main_div{
width: 25%;
position: sticky;
float: left;
display: flex;
flex-flow: column;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
}
.main_div .children_wrapper{
display: flex;
flex-flow: column;
align-items: center;
justify-content: center;
flex-wrap: nowrap;
}
.children_wrapper .div_item{
width: 100%;
height: 7vh;
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 1rem;
}
在 App.js 中:
当我在 main_app div 中像这样调用组件(侧边栏)时,它会根据需要显示在侧边栏位于主要内容旁边的位置:
<div className="app">
<div className="main_app">
<Sidebar />
</div>
In **App.scss**:
*{
box-sizing: border-box;
margin: 0;
padding: 0;
}
.app{
width: 100%;
height: 100%;
background-color: #f0f2f5;
}
.main_app{
width: 100%;
height: 100%;
display: flex;
}
但是,当我将它放在 Route 渲染道具中时,如下所示:
function App() {
return (
<Router>
<div className="app">
<div className="actual_app">
<SideBar/>
</div>
<Switch>
<Route path="/some/link" render={() => <Sidebar/>} />
</Switch>
</div>
</Router>
);
}
【问题讨论】:
-
我似乎无法复制您的问题,但您也有一些不一致之处。例如,我正在查看您的样式以确保您的具有侧边栏和内容的 div 是
flex,并且我看到您将.main_app设置为flex但我没有看到该类在任何地方使用在使用路由器更新的App组件中。
标签: css reactjs sass react-hooks react-router