首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在路由之前调用函数以及在函数完成时更改路由

如何在路由之前调用函数以及在函数完成时更改路由
EN

Stack Overflow用户
提问于 2019-07-04 22:33:34
回答 3查看 3.5K关注 0票数 1

我想知道单击时如何调用某些函数:

代码语言:javascript
复制
<Link to="/">page</Link>

并在路由更改之前调用一些函数。

例如

我在组件A中,我正在单击某个链接前往组件B。路由将更改,但在路由更改之前,我不想播放一些javascript动画,也不想等待动画将完成,然后路由将前往组件B。

我正在使用react-router-4

EN

回答 3

Stack Overflow用户

发布于 2019-07-04 22:39:45

您可以通过编程方式更改路由,而不是使用<Link />

代码语言:javascript
复制
<Button
  onClick={
  () => {
      this.myCustomFunction(); // Execute whatever code you need
      this.props.history.push('/');
     }
  }
></Button>

参考:https://tylermcginnis.com/react-router-programmatically-navigate/

票数 0
EN

Stack Overflow用户

发布于 2019-07-04 22:59:18

我之前通过将所有路径路由到相同的carousel组件创建了一个carousel过渡效果,在carousel中,每个幻灯片代表一个页面。当位置路径改变时,轮播组件将检查路径并滑入下一个组件。类似的想法可以用于任何过渡。

代码语言:javascript
复制
<Switch>
    <Route exact path='/' component={Home} />
    <Route exact path='/history' component={Home} />
    <Redirect to="/" />
</Switch>
代码语言:javascript
复制
public render() {
    let locationPath = this.state.locationPath.toLowerCase();

    return (
        <div style={{ height: "100%" }} id="pageCarousel" className="carousel slide" data-ride="carousel" data-interval={false} >
            <div style={{ height: "100%" }} className="carousel-inner" >
                <div className={"carousel-item summary" + (locationPath == "/" ? " active" : "")}>
                    <div className="overlay" />
                    <div className="pageContainer">
                        <Summary />
                    </div>
                </div>
                <div className={"carousel-item history" + (locationPath == "/history" ? " active" : "")}>
                    <div className="overlay" />
                    <div className="pageContainer">
                        <History />
                    </div>
                </div>
            </div>
        </div>
    );
}
票数 0
EN

Stack Overflow用户

发布于 2019-07-04 22:42:54

您可以通过在单击链接时调用函数来执行此操作

代码语言:javascript
复制
<Button
  onClick={
  () => {
      this.animateAndExit()
     }
  }
></Button>

您的函数将如下所示

代码语言:javascript
复制
const animateAndExit = () => {
animationFunction()
setTimeout(redirectionFunction, timeToWait)
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56890112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档