GSAP с React.js

Я сталкиваюсь с этой проблемой. Я использую GSAP в реактивном проекте для создания сложной анимации. Я хочу спросить, как я могу очистить стиль, примененный к DOM, когда компонент перерисовывает. Это все еще сохраняет старое состояние, которое является tl.reverse(). Я снова установил его в Null и переопределил, но я не работал. Я также новичок, чтобы реагировать. Ниже приведен код. Надеюсь, кто-нибудь может помочь

componentDidMount () {
    this.menu_init()
    this.cta_animation_init()
    // this.cta_animation_active()
    this.hover_effect()
    $(window).on('scroll', function () {
        var t = $(window).scrollTop()

        if ((t > 0 && self.state.currentPos < t) || (t > self.state.min_height && self.state.currentPos > t) || $(window).width() <= 1020) {
            self.menu_scroll()
        } else {
            self.menu_scrolling()
        }
        self.state.currentPos = t
    })
}
componentWillUnmount()
{
}

menu_init () {
    const tl = new TimelineMax({paused: true});
    tl.to('.top-nav', 0.3, {y: '-165px', ease: Power0.easeNone})
        .to('.burger-nav-bg, .burger-nav-button', 0.1, {opacity: 1, scale: 1}, '-=.3')
        .staggerTo('.burger-nav-bar', 0.1, {left: '13px'}, '-=.1')
    this.setState({tl:tl})
}

menu_scroll () {
    this.state.tl.play()
}

menu_scrolling () {
    this.state.tl.reverse()
}

2 ответа

Вы должны прочитать немного о реакции перед использованием

https://reactjs.org/tutorial/tutorial.html

но, отвечая на ваш вопрос, сначала вам не нужно использовать jquery

Как добавить событие прокрутки в компоненте реакции

this.state должен содержать только "состояние", состояние представления, вещи, которые используются в функции рендеринга, каждый раз, когда вы вызываете setState, представление будет перерисовываться, поэтому вы можете использовать setState для изменения стиля, в вашем случае это выглядит так вам нужно изменить стиль на основе timeLineMax, вы должны получить значение, которое вы хотите изменить, из timeLineMax и использовать setState этого конкретного значения, которое вы не должны сохранять в состоянии tl.

просто еще одна вещь, JavaScript использует CamelCase для функций, а не snake_case

http://www.j-io.org/Javascript-Naming_Conventions

Если кто-то хочет сделать что-то подобное сегодня, с GSAP 3 и обработчиками состояния, вот рабочий пример на github:

https://github.com/npinos/cloud-animations-react-gsap

Другие вопросы по тегам