I have illustrated the problem in this CodePenCSS Transitions не выживает Реагировать Компонент изменения внутренней структуры DOM
const Component = ({ structure }) => {
switch (structure) {
case 'nested':
return (
<div>
<AnimatedComponent />
</div>
);
case 'flat':
return
<AnimatedComponent />
;
}
};
Там какая-то логика в AnimatedComponent
, которая изменяет стиль компонента в анимированных модах, например, измените цвет фона с черного на красный в течение 1 секунды. Анимацию запускают путем изменения цветового класса на AnimatedComponent
. Существует CSS для обработки анимации с учетом измененного класса.
При изменении структуры DOM от вложенного до плоского, элемент HTML уничтожается и воссоздается, состояние начала перехода теряется (иначе браузер не знает, какой класс был установлен ранее, потому что элемент был вновь создан).
Что я хочу Реагировать на изменение структуры DOM с помощью перемещающихся элементов в новых позициях, а не их уничтожение и воссоздание.
Возможно ли это?
Я попытался использовать реквизиты key
на <AnimatedComponent />
, но это только фиксирует вспышку изменения DOM. Анимация пропущена. См. Codepen. Спасибо Thomas Rooney за это предложение.
Могу ли я сообщить React, чтобы применить изменения класса только к одному тику после того, как была изменена позиция элемента DOM?
Это работает так, как планировалось! есть ac olor flash on box 2. –
Я бы не сказал, что это ошибка, так как работает анимация CSS3 - их нельзя прерывать. Если вы ищете что-то более жидкое, взгляните на https://github.com/chenglou/react-motion – azium
Я просто устал. Ну, мы просто задерживаем изменения штата/поддержки. Я не думаю, что это может заменить ** переход ... – DevBear15