反应路由器在改变路线之前不等待动画

react-router not waiting for animation before changing route

一个 sample jsfiddle is here 证明了我的问题。

HelloWorld links 更改路线。 Hello 路由离开时已应用该动画。实际上,过渡设置为当 Hello 页面离开时,它要求子组件 <h1> 在它自己的 componentWillLeave 中进行动画处理,完成后它可以愉快地卸载。我这样做是因为在我的真实应用程序中,当 Hello 页面离开时,它的子组件需要以不同的方式进行动画处理 - 所以它不是整个页面的单一过渡。

要查看问题,请单击 Hello 以加载 Hello 页面。然后点击 World link 进入 World 页面。您会看到 World 页面已加载,即使 Hello 正在运行。

那么如何让 World 等待动画完成呢? 我想确认的另一件事是,我采用的在父组件离开之前使子组件具有动画效果的方法是否正确。

作为参考,我在master分支中使用最新的react-router1.0b4

好的。在浏览了许多最新和过时的文档之后,我设法解决了这个问题。 Here is the solution

基本上,react-router 只关心 parent 容器的动画。但这意味着使用 ReactTransitionGroup,我们可以挂钩到现有组件中的 componentWillLeave 方法,在那里我们可以对单个 children 进行操作。 因此,更改页面会通过挂钩自动为 children 设置动画。

解决方案中的 setTimeout 可能看起来像 hack,但这就是我目前所能做的。