reactjs - react Route v4中是否有onChange的替换参数
问题描述
typescript -React Js:我尝试使用 onChange Propriete,但出现以下问题:没有重载匹配此调用。
<HashRouter>
<Switch>
<Route
path="/"
**onChange={() => {**
if (!authstore.isLoggedIn && (location as any).pathName !== "/login") {
authstore.checkLogin();
}
}}
>
<div>Hallo.</div>
<Route exact path="/" component={() => <Index />} />
<Route path="/login" component={() => <Login />} />
<Route path="/deployment/deploymentprojects" component={() => <DeploymentProjectsPageflow />} />
<Route path="/deployment/deploymenttypes" component={() => <DeploymentTypesPageflow />} />
<Route path="/deployment/sonarqube/qualitygates" component={() => <QualityGatePageflow />} />
<Route path="/deployment/sonarqube/qualityprofiles" component={() => <QualityProfilePageflow />} />
<Route path="/deployment/sonarqube/projecttags" component={() => <ProjectTagPageflow />} />
<Route path="/deployment/dependencies" component={() => <DependenciesTable />} />
<Route path="/deployment/rollout/release" component={() => <Release />} />
<Route path="/deployment/rollout/patch" component={() => <Patch />} />
<Route path="/antd" component={() => <AntdLink />} />
<Route path="/kafka" component={() => <KafkaView />} />
<Route path="/pageFlow" component={() => <MyPageflow />} />
<Route
path="/antd/components/:component"
component={(parameter: any) => <AntRouter params={parameter} />}
></Route>
<Route path="/antd/:component" component={(parameter: any) => <AntRouter params={parameter} />}></Route>
</Route>
</Switch>
</HashRouter>
请帮我在反应路由器 v4 中找到 onChange 参数的替代解决方案
解决方案
您可以将 与 结合useLocation
使用useEffect
:
https://reactrouter.com/web/api/Hooks/uselocation
https://reactjs.org/docs/hooks-effect.html
import React, { useEffect } from "react";
import { HashRouter, Switch, Route, useLocation } from "react-router-dom";
const YourWrapper = () => {
const location = useLocation();
useEffect(() => {
if (!authstore.isLoggedIn && location.pathname !== "/login") {
authstore.checkLogin();
}
}, [location]);
return (
<HashRouter>
<Switch>
<div>Hallo.</div>
<Route exact path="/" component={() => <Index />} />
<Route path="/login" component={() => <Login />} />
<Route
path="/deployment/deploymentprojects"
component={() => <DeploymentProjectsPageflow />}
/>
<Route
path="/deployment/deploymenttypes"
component={() => <DeploymentTypesPageflow />}
/>
<Route
path="/deployment/sonarqube/qualitygates"
component={() => <QualityGatePageflow />}
/>
<Route
path="/deployment/sonarqube/qualityprofiles"
component={() => <QualityProfilePageflow />}
/>
<Route
path="/deployment/sonarqube/projecttags"
component={() => <ProjectTagPageflow />}
/>
<Route
path="/deployment/dependencies"
component={() => <DependenciesTable />}
/>
<Route
path="/deployment/rollout/release"
component={() => <Release />}
/>
<Route path="/deployment/rollout/patch" component={() => <Patch />} />
<Route path="/antd" component={() => <AntdLink />} />
<Route path="/kafka" component={() => <KafkaView />} />
<Route path="/pageFlow" component={() => <MyPageflow />} />
<Route
path="/antd/components/:component"
component={(parameter: any) => <AntRouter params={parameter} />}
></Route>
<Route
path="/antd/:component"
component={(parameter: any) => <AntRouter params={parameter} />}
></Route>
</Switch>
</HashRouter>
);
};
推荐阅读
- swift - 参数类型不符合可解码
- python - NaN 值:我在从数据集中查找 MSE 时出错
- c++ - 为什么此代码在“Visual Studio 2017”中有效,但在“Visual Studio 6.0”中无效
- c++ - 如何使用 cmake 检查 C++ 中的 const 正确性
- javascript - 如何让我的按钮清除前两个表单,然后再次单击时清除最后一个表单?
- asp.net-mvc - 负载均衡器中断外部登录,因为重定向 uri 是 http(不是 https)
- python - “ValueError: Unknown layer: ...” 使用 Tensorflow 调用 copy.deepcopy(network) 时
- c - 计算一行文本中有多少个单词?(在 C 编程语言中)
- swift - 返回 true 的 void 函数中出现意外的非 void 返回值
- javascript - 在 ejs 文件中使用 js 文件中的函数