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

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

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


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

最佳答案

好的,所以我在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>
   );
   }
});

07-24 19:19