#javascript #reactjs #undefined #typeerror #image-gallery
#javascript #reactjs #не определено #ошибка типа #изображение-галерея
Вопрос:
Привет, я хотел реализовать эту фотогалерею из react-photo-gallery (https://www.npmjs.com/package/react-photo-gallery )
Я установил 2 зависимости: react-photo-gallery и react-images
Я хотел протестировать следующую ссылку:https://codesandbox.io/s/awesome-bassi-5vn3lvz2n4?from-embed=amp;file=/index.js:666-689 , но я столкнулся с a TypeError: Cannot read property 'active' of undefined
при нажатии на одно из изображений в моем проекте. (https://ibb.co/9gdT9LD )
Я пытался использовать тот же точный код, и я действительно не понимаю, почему существует ошибка типа.
Есть ли кто-нибудь, кто может мне помочь, почему возникла ошибка, и исправить эту ошибку?
Вот мой код, который я использовал для реализации (тот же код, что и в примере, но другим способом)
import React, { useState, useCallback } from 'react';
import Gallery from 'react-photo-gallery';
import Carousel, { Modal, ModalGateway } from 'react-images';
const photos = [
{
src: 'https://source.unsplash.com/2ShvY8Lf6l0/800x599',
width: 4,
height: 3,
},
{
src: 'https://source.unsplash.com/Dm-qxdynoEc/800x799',
width: 1,
height: 1,
},
{
src: 'https://source.unsplash.com/qDkso9nvCg0/600x799',
width: 3,
height: 4,
},
{
src: 'https://source.unsplash.com/iecJiKe_RNg/600x799',
width: 3,
height: 4,
},
{
src: 'https://source.unsplash.com/epcsn8Ed8kY/600x799',
width: 3,
height: 4,
},
{
src: 'https://source.unsplash.com/NQSWvyVRIJk/800x599',
width: 4,
height: 3,
},
{
src: 'https://source.unsplash.com/zh7GEuORbUw/600x799',
width: 3,
height: 4,
},
{
src: 'https://source.unsplash.com/PpOHJezOalU/800x599',
width: 4,
height: 3,
},
{
src: 'https://source.unsplash.com/I1ASdgphUH4/800x599',
width: 4,
height: 3,
},
];
const ImageGrid = (props) => {
const [currentImage, setCurrentImage] = useState(0);
const [viewerIsOpen, setViewerIsOpen] = useState(false);
const openLightbox = useCallback((event, { photo, index }) => {
setCurrentImage(index);
setViewerIsOpen(true);
}, []);
const closeLightbox = () => {
setCurrentImage(0);
setViewerIsOpen(false);
};
return (
<div>
<Gallery photos={photos} onClick={openLightbox} />
<ModalGateway>
{viewerIsOpen ? (
<Modal onClose={closeLightbox}>
<Carousel
currentIndex={currentImage}
views={(x) => ({
...x,
srcset: x.srcSet,
caption: x.title,
})}
/>
</Modal>
) : null}
</ModalGateway>
</div>
);
}
export default ImageGrid;
Комментарии:
1. единственными различиями между вашим примером и примером react-photo-gallery являются версии react и react-photo-gallery. Возможно, попробуйте изменить пакет версии react-photo-gallery.
2. Я использовал версию «react-images»: «1.0.0» и «react-photo-gallery»: «^ 8.0.0»,
3. Также есть пустая страница
Ответ №1:
Я также столкнулся с этой проблемой, и изменение версии «react-images» на «1.0.0» исправило ее для меня.
Просто запустите в терминале
npm install react-images@1.0.0
Убедитесь, что ваш сервер react dev не запущен при установке, иначе npm завершится с ошибкой.
Ответ №2:
Мне пришлось понизить версию React до 16.8.6, чтобы заставить ее работать.