【发布时间】:2021-04-16 23:24:36
【问题描述】:
我有一个带有标题组件的 react-router 应用程序,当位于“/home”路径时,它占据了页面的整个高度。当我导航到新路径“/foo”时,我需要更改标题的高度。
当我通过在浏览器中输入网址直接加载任一页面时,它具有正确的高度:
- 100vh 用于 localhost:3000/home
- 15vh 用于 localhost:3000/foo
但是,当我使用以下代码从 /home 导航到 /foo 时,URL 会正确更改,但 DOM 不会重新呈现。 header 仍然有 100vh 的高度,并且 DOM 不包含 Foo 组件。
App.js
const App = () => {
return (
<Provider store={store}>
<Router>
<Header />
<Switch>
<Route path='/home' component={null}/>
<Route path='/foo' component={Foo}/>
</Switch>
</Router>
</Provider>
);
}
Home.js
const Home = () => {
// ... some more code
const navigate = useCallback(to => {
history.push(to);
}, []);
// ... some more code
};
Header.js
const Header = () => {
const { pathname } = useLocation();
const style = pathname === '/home'
? { height: '100vh'}
: { height: '15vh'}
return (
<div style={style}>
{ /* ...some more code */ }
</div>
);
};
Foo.js
const Foo = () => {
return (
<div>
Foo...
</div>
);
};
【问题讨论】:
标签: javascript reactjs react-router react-router-dom