#javascript #animation #reactjs #web #browser
#javascript #Анимация #reactjs #веб #браузер
Вопрос:
Я использую react motion для анимации в своем проекте.Я решил проблему рендеринга анимации каждый раз при изменении реквизита, поддерживая состояние.
const {animation} = this.state;
if (animation) {
return (
// updates state upon animatioon to false
<Animator rest={this.rest}>
{this.getContent()}
</Animator>
);
}
return this.getContent();
У меня есть обратный вызов, который изменит мое состояние после завершения анимации.Это решает все проблемы, кроме изменения реквизита во время анимации.
Допустим, моя анимация происходит в течение 2 секунд, и после этого запускается обратный вызов, но если анимация находится в середине, например, 1 секунда, и мои реквизиты меняются, тогда моя анимация снова начинается с начала.
Я не хочу использовать shouldComponentUpdate
, так как это остановит обновление представления.
Итак, как обычно решается эта ситуация. Можно ли его использовать shouldComponentUpdate
.Есть ли какие-либо лучшие альтернативы?
Заранее спасибо.
Комментарии:
1. Используете ли вы
componentWillReceiveProps
для обработки изменения реквизита? или что-то напрямую связано с реквизитом?2. @BradBumbalough приведенный выше код находится в моей функции рендеринга, которая рендерится при изменении моего реквизита
Ответ №1:
Если компонент анимации визуализируется в этом компоненте (с именем A), он будет начинаться с начала каждый раз, когда A повторно визуализируется. Итак, я думаю, вы можете отобразить компонент анимации в другом компоненте (B), который является родственным A и лежит над A с прозрачным фоном, или просто использовать компонент анимации в качестве родственного. A и B могут взаимодействовать через своего родителя или redux.