【发布时间】:2020-05-14 08:18:01
【问题描述】:
我有一个应用程序组件,如果条件不满足,我想在它从那里着陆后进行重定向,并在完成渲染时渲染另一个组件,但不知何故,当我转到 "path/myURl" 我不查看我的<Home> 组件:
const App: FunctionComponent<{}> = () => {
useEffect(() => {
if (!localstorage.getItem("token")) {
window.location.replace("/myUrl");
}
}, []);
return (
<>
<Route
exact
path="/myUrl"
render={() => <Home />}
/>
</>
);
};
export default App;
首页组件:
const Home: FunctionComponent<{}> = () => {
return <> Hello</>
}
索引页面:
class WebComponent extends HTMLElement {
render() {
ReactDOM.render(
<root.div style={{ all: "initial" }}>
<BrowserRouter>
<App />
</BrowserRouter>
</root.div>,
this
);
}
connectedCallback(): void {
this.render();
}
}
【问题讨论】:
-
App是否在路由器中呈现?您可以(并且应该)使用路由道具或useHistory挂钩来执行history.replace重定向。在“/myUrl”之前还渲染了哪些其他路由? -
react-router 的做法是渲染一个
<Redirect />或者将新的 url 推送到它的history对象。此外,/myUrl路由需要在主<Router>内部,而不是在触发重定向的组件中。 -
@DrewReese 实际上,我没有在“/myUrl”之前呈现的任何其他路线,页面一旦登陆它就会检查是否有令牌,然后将用户重定向到另一条路线
标签: javascript reactjs react-router components