对不起,如果这已经得到回答。但是有没有办法在每个<Link>
导航上执行自定义函数?最好不创建自定义<Link>
包装器。
我想在我的应用程序中的每次导航之前将一些信息放入 sessionStorage。
谢谢
对不起,如果这已经得到回答。但是有没有办法在每个<Link>
导航上执行自定义函数?最好不创建自定义<Link>
包装器。
我想在我的应用程序中的每次导航之前将一些信息放入 sessionStorage。
谢谢
您可以onClick
用来执行任何操作,例如
<Link
to="/"
onClick={() => console.log('Heading to /')} />
替换console.log
为执行sessionStorage
更新等操作的函数,仅此而已。
另一种方法是使用组件的onEnter
propRoute
来执行每个路径输入的特定功能:
<Route
path="/"
component={App}
onEnter={() => console.log('Entered /')} />
我确实在寻找这个答案,但在任何地方都找不到,然后我做了一些实验,这是对我有帮助的答案,所以我想我会分享!
如果你使用React Router的uselocation钩子。这个钩子为您提供了一个具有关键属性的对象,该属性在每次路由器更改时都会更改。然后,您可以创建一个 useEffect 来监视此属性并在该键更改时触发一个函数。请参阅下面的示例
const location = useLocation();
useEffect(() => {
console.log('location', location.key); // { key: "3uu089" }
// Fire whatever function you need.
sessionStorage.setItem('whatever', state);
}, [location.key]);
您可以像下面这样在react-router的路由对象上调用任何函数:
function someFunction(a,b){
const c = a + b;
return c
}
<Switch>
<Route exact exact path="/" component={SomeComponent} />
<Route path="/reload" render= {(props)=>someFunction() } />
</Switch>