【问题标题】:Using ReactTransitionGroup with ReactRouter将 React 过渡组与 React 路由器一起使用
【发布时间】:2015-03-25 02:22:50
【问题描述】:

我正在尝试将 React 的低级动画 API(即 ReactTransitionGroup)与 React Router 一起使用,这样我就可以使用 requestAnimationFrame 而不是 CSS 来制作过渡动画。有谁知道如何在与每个路由关联的组件上调用特殊的生命周期挂钩?

我尝试将 RouteHandler 组件包装在 ReactTransitionGroup 中,但当前路由组件的“componentWillLeave”事件在更改路由时不会触发。

<ReactTransitionGroup component="div">
   <RouteHandler key={name}/>
</ReactTransitionGroup>

这是一个说明我的问题的 JSFiddle:http://jsfiddle.net/d2mnwqLj/3/

【问题讨论】:

标签: javascript reactjs react-router


【解决方案1】:

好的,所以我在 github 上找到了答案。这就是诀窍:

var RouteHandler = require('react-router/modules/mixins/RouteHandler');

var Component = React.createClass({
  mixins: [Router.State, RouteHandler],
  render: function() {
    var routeKey = this.getRoutes().reverse()[0].name;
    var routeHandler = this.getRouteHandler({ key: routeKey });
    return (
     <div>
      <ul>
        <li><Link to="view1">View1 link</Link></li>    
        <li><Link to="view2">View2 link</Link></li>    
      </ul>
      <ReactTransitionGroup component="div">
         {routeHandler}
      </ReactTransitionGroup>
     </div>
   );
   }
});

【讨论】:

  • mixin 在最新版本中消失了。还有其他方法吗?
  • 也许可以尝试这里使用的包装方法:stackoverflow.com/questions/27864720/…
  • 不然等1.0我猜
  • 我等1.0。我认为包装不会对我的用例有所帮助,因为我需要将道具从父级传播到子级,并且在组件外部使用传播代码感觉不对。
猜你喜欢
  • 2017-01-03
  • 2016-09-23
  • 2016-09-15
  • 2018-07-28
  • 2021-09-22
  • 2017-02-19
  • 2018-04-03
  • 1970-01-01
  • 2020-07-20
相关资源
最近更新 更多