@PantyDev

Как в моем случае реализовать плавное затухание картинки, и появление новой?

Всем привет, есть следующий код:

import React, { useEffect, useState } from 'react';

const Background: React.FC = () => {
    const images = [ "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg" ];
    const [currentImage, setCurrentImage] = useState("")
    const [imageIndex, setImageIndex] = useState(0);

    const changeId = () => setImageIndex(id => id + 1);
    useEffect(() => {
         window.addEventListener("click", changeId);
         return () => window.removeEventListener("click", changeId);
    }, [])

    useEffect(() => {
        setCurrentImage(images[imageIndex]);
    }, [imageIndex])

    return (
        <img
           src={currentImage}
           alt={"background"}
        />
    );
};

export default Background;


Как вы могли догадаться, при нажатии на кнопку мыши, меняется картинка из массива. Задача следующая - нужно чтобы изменение было с анимацией - плавный переход в полностью чёрное, и плавное появление уже новой картинки. В случае, если пользователь кликает слишком быстро, анимацию необходимо прервать и просто отобразить следующую картинку.

  • Пробовал использовать css анимацию, но почему-то изображение сначала "моргало", а потом переключалось.
  • Я пробовал использовать событие onTransitionEnd, но иногда (если слишком быстро кликать) это не срабатывало, и в результате новая картинка не появлялась, а оставался только черный экран.


Только не надо отвечать загадками или только ссылаться на какие-то другие библиотеки без подробной росписи как с ней работать в контексте моей задачи
  • Вопрос задан
  • 362 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы