Вообще говоря - Да , вы должны использовать ref
для анимации или изменения свойств стиля с помощью таких событий, как прокрутка, масштабирование и т. Д. Причина в том, что когда вы используете setState
, вы заставляете каждый раз перерисовывать компонентвремя прокрутки, масштабирования и т. д. Кроме того, эти события можно вызывать много раз в секунду, поэтому вы можете себе представить, почему вы получаете прерывистый эффект.
Однако при изменении компонента css напрямуюне рендерится - он только меняет стиль прямо на элементе, поэтому эффект анимации более плавный.
РЕДАКТИРОВАТЬ
Поэтому я решил создать небольшую демонстрацию, которая иллюстрируетчто было сказано в комментариях под ответом.
Вот jsfiddle little demo
Он ведет себя так, как если бы вы обновляли компонент.Вы можете легко проверить это, вставив console.log('updated')
в componentDidUdpate
hook - каждый раз, когда вы вызываете setState
, вы увидите updated
сообщение.Это не перемонтирует компонент, хотя.