React Router + Animation 库问题:组件在使用 react-router-dom 卸载之前不会动画
Posted
技术标签:
【中文标题】React Router + Animation 库问题:组件在使用 react-router-dom 卸载之前不会动画【英文标题】:React Router + Animation libraries problems: components won't animate before unmounting with react-router-dom 【发布时间】:2020-09-02 21:14:07 【问题描述】:我有以下代码:
import React from "react";
import BrowserRouter, Route, NavLink from "react-router-dom";
import AnimatePresence, motion from "framer-motion";
import Hi from "./Hi";
import Something from "./Something";
import "./App.css";
const App = () =>
return (
<BrowserRouter>
<AnimatePresence>
<NavLink to="/">Hi</NavLink>
<br />
<NavLink to="/something">Something</NavLink>
<hr />
<Route path="/" exact=true key="1">
<motion.div
initial= opacity: 0
animate= opacity: 1
exit= opacity: 0
transition= duration: 2
key="hi"
>
<Hi />
</motion.div>
</Route>
<Route path="/something" exact=true key="2">
<motion.div
initial= opacity: 0
animate= opacity: 1
exit= opacity: 0
key="something"
transition= duration: 2
>
<Something />
</motion.div>
</Route>
</AnimatePresence>
</BrowserRouter>
);
;
export default App;
它应该在<Hi/>
和<Something/>
被挂载时进行淡入 动画,在它们被卸载时淡出。安装动画发生,但另一个没有。在动画效果开始之前,这两个组件都已卸载,并且所有动画库都会出现问题:framer-motion
、react-transition-group
等。
【问题讨论】:
【参考方案1】:不确定您是否仍在寻找答案,但我通过将 exitBeforeEnter
标志添加到 AnimatePresence
解决了类似的问题。
所以...
//...
<AnimatePresence exitBeforeEnter>
<NavLink to="/">Hi</NavLink>
<br />
<NavLink to="/something">Something</NavLink>
<hr />
//...
【讨论】:
以上是关于React Router + Animation 库问题:组件在使用 react-router-dom 卸载之前不会动画的主要内容,如果未能解决你的问题,请参考以下文章
React Router + Animation 库问题:组件在使用 react-router-dom 卸载之前不会动画
状态更改时不会重新渲染 React-typing-animation
不支持 React-native Animation.event 样式属性
react-router 4.0、react-router-dom 和 react-router-redux 有啥区别?
React Animation 的 ReactCSSTransitionGroup 和 CSSTransitionGroup 不能像示例代码中那样工作