首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dom路由器+动画库问题:组件在卸载之前不会使用动画。

dom路由器+动画库问题:组件在卸载之前不会使用动画。
EN

Stack Overflow用户
提问于 2020-05-17 03:01:02
回答 1查看 426关注 0票数 5

我有以下代码:

代码语言:javascript
复制
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-motionreact-transition-group和其他组件都会出现问题。

EN

回答 1

Stack Overflow用户

发布于 2021-05-19 12:29:19

不确定您是否还在寻找答案,但我通过将exitBeforeEnter标志添加到AnimatePresence解决了类似的问题。

所以..。

代码语言:javascript
复制
//...
<AnimatePresence exitBeforeEnter>
        <NavLink to="/">Hi</NavLink>
        <br />
        <NavLink to="/something">Something</NavLink>
        <hr />
//...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61846439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档