Вы можете использовать Компонент высшего порядка или Компонент обертки, который управляет монтажом вашего Компонента.
Как вы уже догадались, анимация компонента после монтажа не является проблема, поскольку вы можете получить к нему доступ обычно в componentDidMount, но проблема заключается в том, как анимировать его, когда он отключается, поскольку html больше не отображается после этого.
Вы можете попытаться отложить отключение для размонтирование анимации до фини sh. Есть хорошая статья с примером того, как это сделать здесь (спасибо Томашу Ференсу за публикацию!).
Если вы оберните анимированные компоненты этим компонентом высшего порядка, вы Затем вы можете проверить ваши новые реквизиты в ваших анимационных компонентах ловушки жизненного цикла 'componentWillMount' и 'componentDidUpdate', чтобы вызвать анимацию вашего компонента:
class YourAnimatedComponent extends Component {
container = React.createRef();
componentDidMount() {
//component is mounting initally
this.mount();
}
componentDidUpdate(prevProps, prevState) {
//component is unmounting
if (prevProps.isMounted && !this.props.isMounted) {
this.unmount();
}
//component is mounting
else if (!prevProps.isMounted && this.props.isMounted) {
this.mount();
}
}
mount = () => {
//logic for animation in, e.g.:
//TweenMax.to(this.container.current, .3, {css: {opacity: 1}});
}
unmount = () => {
//logic for animation out e.g.:
//TweenMax.to(this.container.current, .3, {css: {opacity: 0}});
}
...
render() {
return(<div ref={this.container}>your content</div>);
}
}
Надеюсь, это даст вам толчок в правильном направлении.