Добавление анимации к изменению изображения в React

Я пытался реализовать смену изображений по клику в React. У меня есть 3 изображения, расположенные друг над другом, и я изменяю атрибут src изображений. Несмотря на то, что сам функционал работает нормально, мне не удалось добавить анимацию перехода. Я пытался получить что-то похожее на то, что на фото

стопка фотографий

Я столкнулся с некоторыми решениями, основанными на том факте, что анимация воспроизводится только один раз, когда компонент визуализируется в первый раз, и чтобы вызвать повторную визуализацию элементов изображения, мне пришлось назначить атрибут «ключ» изображениям, однако это не так. т работать на меня. Однако, возможно, я ошибаюсь.

Буду признателен за любую помощь :)

Вот соответствующие части кода:

const [activeImage, setActiveImage] = useState(1);



const nextImg = () => {
activeImage === 5 ? setActiveImage(1) : setActiveImage(activeImage+1)
}

const prevImg = () => {
activeImage === 1 ? setActiveImage(5) :setActiveImage(activeImage-1)
}


<div className = "frame">
        <img key = {activeImage} className = "current-image" src = {`/src/assets/images/${activeImage}.jpg`} />            
        <img key = {activeImage + 1} className = "next-image" src = {`/src/assets/images/${activeImage === 5 ? activeImage-4 : activeImage + 1}.jpg`} />
        <img key = {activeImage + 2} className = "next-2-image" src = {`/src/assets/images/${activeImage === 4 || activeImage === 5 ? activeImage-3 : activeImage + 2}.jpg`} />
    </div>`

      <button className='left' onClick = {prevImg}><Arrow /></button>
      <button className='right' id='right' onClick = {nextImg}><Arrow /></button>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

import A from './img/pictureA.png'
function App() {
    return (
        <div>
            <img src = {A} alt='I am A' width = {'200px'}/>
        </div>
    )
}

Итак, вы можете изменить свой код следующим образом (только не забудьте изменить номер изображения).


import pic1 from '../src/assets/images/1.jpg'
import pic2 from '../src/assets/images/2.jpg'
import pic3 from '../src/assets/images/3.jpg'

<div className='frame'>
                    <img
                        key = {activeImage}
                        className='current-image'
                        src = {pic1}
                        alt=''
                    />
                    <img
                        alt=''
                        key = {activeImage + 1}
                        className='next-image'
                        src = {`${activeImage === 5 ? pic1 : pic2}`}
                    />
                    <img
                        alt=''
                        key = {activeImage + 2}
                        className='next-2-image'
                        src = {`${
                            activeImage === 4 || activeImage === 5 ? pic3 : pic1
                        }`}
                    />
                </div>


Большое спасибо! Пока не понял, почему, но, похоже, переход действительно заработал.

dummyjuice 29.12.2022 10:47

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