vis*_*Inc 7 javascript animation reactjs framer-motion
我使用React Portals构建了一个 React Modal组件(请参阅上面的文档)。在单击关闭按钮时卸载组件之前,我想使用AnimatePresence通过 Framer Motion 运行动画。不幸的是,我无法让它发挥作用,需要帮助。exit
我添加
exit={{ opacity: 0 }}了一个孩子<RenderModal/>。输入动画使用initial并按animate预期工作。
<AnimatePresence>模态根元素<div id="root"></div>
<AnimatePresence>
<div id="modal-root"></div>
</AnimatePresence>
Run Code Online (Sandbox Code Playgroud)
错误:目标容器需要 DOM 元素
<div id="modal-root">
<AnimatePresence></AnimatePresence>
</div>
Run Code Online (Sandbox Code Playgroud)
const Modal = ({
title,
footer,
children,
}) => {
<AnimatePresence>
{isVisible
&& (
<RenderModal
title={title}
footer={footer}
hide={hide}
>
{children}
</RenderModal>
)}
</AnimatePresence>
};
Run Code Online (Sandbox Code Playgroud)
return (
<>
<Button onClick={show}>Open Modal</Button>
<AnimatePresence>
<Modal {...args}></Modal>
</AnimatePresence>
<p>Lorem ipsum dolor sit amet...</p>
</>
);
Run Code Online (Sandbox Code Playgroud)
小智 8
你好,我想可能会迟到。但我用这段代码解决了
import { ReactNode } from "react";
import ReactDOM from "react-dom";
import { AnimatePresence } from "framer-motion";
interface ModalWrapperProps {
children: ReactNode;
isShowing: boolean;
}
const ModalWrapper = ({ children, isShowing }: ModalWrapperProps) =>
ReactDOM.createPortal(
<AnimatePresence exitBeforeEnter>
{isShowing && children}
</AnimatePresence>,
document.body
);
export default ModalWrapper;
Run Code Online (Sandbox Code Playgroud)
我在下面的帖子中受到启发
https://blog.logrocket.com/implementing-animated-toasts-in-react/
| 归档时间: |
|
| 查看次数: |
5217 次 |
| 最近记录: |