【发布时间】:2021-07-04 23:15:10
【问题描述】:
我目前设置了一个简单的 React JS 应用程序,它有 2 个页面 - 一个登录页面和一个“房间”页面。我正在使用 react-router 中的 useHistory 钩子。
预期行为
当用户在“房间”页面点击刷新时,应用程序将返回“登陆”页面。
预计行为
用户点击刷新,路径名确实在一瞬间更改为着陆页的路径名。并且“房间”页面再次自行安装,取代了“登陆”页面。
这是我的应用程序的代码 sn-ps:
App.js
import LandingPage from './components/pages/LandingPage';
import RoomPage from './components/pages/RoomPage';
function App() {
return (
<Router>
<Switch>
<Route exact path="/" component={LandingPage}/>
<Route path="/room-:roomId" component={RoomPage}/>
</Switch>
</Router>
);
}
export default App;
着陆页
function LandingPage(){
const history = useHistory();
function toRoomPage(){
history.push('/room-{room_id here}');
}
function onAnotherBtnClick(){
console.log("hi");
}
return (
<div className="landing-page-container page-container">
<div className="landing-page-inner-panel">
<div className="landing-page-inner-top">
Landing Page
</div>
<div className="landing-page-button-wrapper">
<button className="btn btn-primary" onClick={toRoomPage}>To Room Page</button>
</div>
<div>or</div>
<div className="landing-page-button-wrapper">
<button className="btn btn-secondary" onClick={onAnotherBtnClick}>Another Button</button>
</div>
</div>
</div>
);
}
export default LandingPage;
房间页面
function RoomPage(){
const history = useHistory();
function onUnload(){
history.replace("/");
}
useEffect(() => {
window.addEventListener("unload", onUnload)
return () => {
window.removeEventListener("unload", onUnload);
}
}, [])
return (
<div className="room-page-container page-container">
Room Page
</div>
);
}
export default RoomPage;
我不太确定 DOM 在刷新时的行为,因为我对 React JS 还很陌生。 .replace() 和 .push() 都试过了,还是不行。
我已经在网上连续搜索了 2 个小时,但无济于事。希望有人能给我一些启示。提前非常感谢。
【问题讨论】:
-
检查我的答案。快乐编码:)
标签: reactjs react-router