首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React router 4 beta 2与ReactCSSTransitionGroup

React router 4 beta 2与ReactCSSTransitionGroup
EN

Stack Overflow用户
提问于 2017-02-01 21:47:07
回答 1查看 1.9K关注 0票数 4

我更喜欢用于react-motionReactCSSTransitionGroup。下面的代码导致组件在路由更改时淡入(出现),但问题是-离开组件不会淡出,它会立即离开。

代码语言:javascript
复制
<Switch>
    <FadeRoute exact path="/" component={PageLanding}/>
    <FadeRoute path="/login" component={PageLogin}/>
    <FadeRoute path="/signup" component={PageSignup}/>
    <FadeRoute component={Page404}/>
</Switch>

function FadeRoute({component:Component, ...rest}) {
    return (
        <Route {...rest} children={({location,match}) => (
                <ReactCSSTransitionGroup {...{key:Date.now(), transitionName:'fade', transitionAppear:true, transitionEnter:true, transitionLeave:true, transitionAppearTimeout:300, transitionEnterTimeout:300, transitionLeaveTimeout:300})}>
                    <Component/>
                </ReactCSSTransitionGroup>
        )} />
    );
}
代码语言:javascript
复制
<style>
.fade-enter, .fade-appear { opacity:0; }
.fade-enter.fade-enter-active,
.fade-appear.fade-appear-active { opacity:1; transition: opacity 300ms; }
.fade-leave { opacity:1; }
.fade-leave.fade-leave-active { opacity:0; transition: opacity 300ms; }
</style>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 00:37:18

<Switch>的工作方式是,它只呈现路径与当前位置匹配的第一个<Route>。这意味着当您导航时,现有的<FadeRoute>会在您导航时立即卸载。它的子<CSSTransitionGroup>也已卸载,因此它没有机会为其子进程运行leave转换。

您想要做的是将<Switch>包装在<CSSTransitionGroup>中。<Switch>是将被转换的组件,因此它应该有一个key。您还应该将location对象传递给它,以便当<Switch>离开时,它使用旧的location而不是当前的one来设置动画。

代码语言:javascript
复制
<CSSTransitionGroup
  transitionName='fade'
  transitionEnterTimeout={500}
  transitionLeaveTimeout={500}
>
  <Switch key={location.pathname} location={location}>
    <Route path="/red" render={Red} />
    <Route path="/green" render={Green} />
    <Route path="/blue" render={Blue} />
  </Switch>
</CSSTransitionGroup>
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41981382

复制
相关文章

相似问题

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