我已经使用一种非传统的标记结构,通过react-router-dom
实现了这个手风琴布局。
演示: https://codesandbox.io/s/falling-violet-kvqn2?file=/src/Case.js
一个手风琴标题的简短代码:
<motion.div
layout
transition={transition}
key={item.id}
style={{
flex: isActive ? 1 : 0,
flexBasis: isActive ? null : 56,
...
}}
>
<NavLink
style={{
...
}}
exact={true}
to={item.url}
/>
<Route exact path={item.url}>
<motion.div
transition={{ delay: 1, ...transition }}
variants={{
open: { opacity: 1 },
collapsed: { opacity: 0 }
}}
initial="collapsed"
animate="open"
exit="collapsed"
layout
style={{
...
}}
>
<Home />
</motion.div>
</Route>
</motion.div>
我正在尝试让framer-motion
在手风琴页面之间进行动画处理。就像下面的gif图中一样。
您可以看到它可以很好地处理in
过渡动画,但在切换页面时无法很好地处理exit
属性。单击手风琴标题时,内容会突然隐藏。看起来它被从DOM中删除,而没有考虑到AnimateSharedLayout
或AnimatePresence
。我尝试添加exitBeforeEnter
属性,但不起作用。
您有什么想法吗?