У меня есть довольно простой компонент списка, который отображает список компонентов элемента в зависимости от состояния избыточности.Когда компонент списка удаляет элемент из списка, компонент элемента не переходит в состояние exit
или exiting
, так как он был удален из DOM родителем.
Компонент списка:
const ListComponent: React.FC<any> = ({list}): JSX.Element | null => (
<div className="list-component">
{list.map((item: any) => (
<ItemComponent {...item} key={item.uniqueKey} />
))}
</div>
);
Компонент элемента, который использует Реактивный переход (От Реактивная группа перехода )
const defaultStyle = {
transition: `opacity ${duration}ms ease-in-out, transform ${duration+200}ms ease-in-out`,
opacity: 0,
transform: 'translateY(-10px)'
};
const transitionStyles: any = {
entering: {
opacity: 0,
transform: 'translateY(-10px)'
},
entered: {
opacity: 1,
transform: 'translateY(0)'
},
exiting: { opacity: 0 } <-- never gets triggered
};
const ItemComponent: React.FC<any> = ({props}) => (
<Transition in={true} timeout={duration} appear={true} exit={true}>
{(state) => {
console.log("state", state); <-- gives entering & entered. Never exit states
return (
<div className={`${CLASS_NAME}`} style={{
...defaultStyle,
...transitionStyles[state]
}}>
// ..content
</div>
);
}}
</Transition>
);
Как я могу контролировать это?я предполагаю, что это должно быть обработано из компонента списка каким-либо образом.Это должно оживить прежде, чем это будет фактически удалено из DOM.Список только отображает список.Как я могу защитить эту анимацию до того, как она будет удалена из DOM?