我有以下代码:
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和其他组件都会出现问题。
发布于 2021-05-19 12:29:19
不确定您是否还在寻找答案,但我通过将exitBeforeEnter标志添加到AnimatePresence解决了类似的问题。
所以..。
//...
<AnimatePresence exitBeforeEnter>
<NavLink to="/">Hi</NavLink>
<br />
<NavLink to="/something">Something</NavLink>
<hr />
//...https://stackoverflow.com/questions/61846439
复制相似问题