Я создаю HO C, который анимирует группу дочерних компонентов, используя TransitionGroup и Transition из react-transition-group
, для достижения эффекта "постепенного исчезновения" и "постепенного исчезновения". Мой компонент выглядит примерно так:
const defaultStyle = (duration: number) => ({
transition: `opacity ${duration}ms ease-in-out`,
opacity: 0,
});
const transitionStyles: any = {
entering: {opacity: 1},
entered: {opacity: 1},
exiting: {opacity: 0},
exited: {opacity: 0},
};
export const FadeAnimation: FC<FadeAnimationProps> = ({
duration,
children
}) => {
const elements = React.Children.toArray(children);
return (
<TransitionGroup component={null}>
{elements.map((child, index) => {
return (
<Transition timeout={duration} key={index}>
{(transitionState: string) => {
return React.cloneElement(child as ReactElement, {
style: {...defaultStyle(duration),
...transitionStyles[transitionState]},
});
}}
</Transition>
);
})}
</TransitionGroup>
);
};
Однако я не могу получить постепенное исчезновение при переходе к работе, и мои компоненты отображаются с непрозрачностью 1., когда я выполняю console.log стиля для состояния Я получаю opacity: 0
для выхода, затем opacity: 1
для входа. Но нет перехода между этими состояниями.
Я неправильно использую эту библиотеку? Что-то мне не хватает в параметрах анимации?
Демо: https://jsfiddle.net/4e2xgrtf/2/
В демоверсии, в консоли, вы можете увидеть состояние, а также стиль, который идет с этим. если вы нажмете «добавить элемент», вы увидите новый элемент с состоянием (выход / непрозрачность 0), а затем (ввод / непрозрачность 1), но анимация не применяется.