const Component = ({ structure }) => {
switch (structure) {
case 'nested':
return (
<div>
<AnimatedComponent />
</div>
);
case 'flat':
return
<AnimatedComponent />
;
}
};
有一些逻辑以AnimatedComponent
动画方式更改组件的样式,例如在 1 秒的持续时间内将背景颜色从黑色更改为红色。动画是通过更改颜色类开始的AnimatedComponent
。给定更改的类,有 CSS 来处理动画。
当将 DOM 结构从嵌套更改为平面时,HTML 元素被销毁并重新创建,转换开始状态丢失(也就是浏览器不知道之前设置了哪个类,因为元素是新创建的)。
我希望 React 做的是通过在新位置移动元素来改变 DOM 结构,而不是破坏和重新创建它们。
这可能吗?
我尝试在 上使用key
道具<AnimatedComponent />
,但它只修复了 DOM 更改的 flash。动画被跳过。请参阅Codepen。感谢托马斯鲁尼的这个建议。
我可以告诉 React 在 DOM 元素的位置更改后仅应用类更改吗?