Carousel Реагирует на JS, JSON, JSX TypeError: не удается прочитать свойство » неопределенного

#reactjs #carousel #react-bootstrap

#reactjs #карусель #реагирует-bootstrap

Вопрос:

Я в начале react js, и я новичок здесь, поэтому извините, если я написал проблему неразборчиво, я хотел бы сделать Карусель с помощью JSON.Данные, но я могу отобразить только одну фотографию, я не могу делать скользящие фотографии. Я надеюсь, что кто-нибудь сможет мне помочь.

введите описание изображения здесь

data.json

    {
  "Slajd":[
    {
        "id": 1,
        "name": "title",
        "image": [
           "https://cf.bstatic.com/images/hotel/max1024x768/263/263731269.jpg",
           "https://images.pexels.com/photos/1108099/pexels-photo-1108099.jpeg?auto=compressamp;cs=tinysrgbamp;dpr=1amp;w=500"
        ]
   }
  ]
}
 
 

JSX

  import React from 'react';
import { Container, Carousel, CarouselItem, CarouselProps } from 'react-bootstrap';
export function Slider({ data }) {
    return(
             <Carousel>
                 <Carousel.Item interval={1000}>
                 <img
                   className="d-block w-100"
                   src={data.image}
                   />
               </Carousel.Item>
            </Carousel>
        );
}
 

App.js

 function App() {
  return(
      <Container>
       {photo.Slajd.map(data => (
       <Carousel xs={3} key={data.id}>
         {data.image.map(imgSrc => (
        <Slider imgSrc={imgSrc}/>
         ))}
         </Carousel>
       ))}
      </Container>
  );
}
 

Ответ №1:

Первый совет, попробуйте вставить debugger и посмотреть, что data photo возвращает or JSON. Вы также можете сделать это с console.log помощью.

Во-вторых, как я вижу, вы просматриваете свои слайды, затем просматриваете URL-адреса изображений и передаете этот URL-адрес компоненту слайдера в качестве imgSrc реквизита, но в компоненте слайдера вы пытаетесь получить data реквизит вместо imgSrc .

Попробуйте изменить так:

 import React from 'react';
import { Container, Carousel, CarouselItem, CarouselProps } from 'react-bootstrap';
export function Slider({ imgSrc }) {
    return(
             <Carousel>
                 <Carousel.Item interval={1000}>
                 <img
                   className="d-block w-100"
                   src={imgSrc}
                   />
               </Carousel.Item>
            </Carousel>
        );
}
 

Комментарии:

1. Спасибо за быстрый ответ. Я сделал, как вы предложили. Он работает, но фотографии отображаются одна за другой. Это все еще не слайдер. Есть какие-нибудь идеи, как это исправить?

2. @LukaszxDunat Вы объявляете Carousel компонент как в Slider компонентах, так и App в компонентах. Удалите Carousel компонент из слайдера, оставьте только a Carousel.Item . Вы можете завернуть его внутрь <> </> . Смотрите этот пример react-bootstrap.github.io/components/carousel

3. Я удалил компонент карусели из слайдера, но сейчас ничего не отображается. Должен ли я устанавливать активный элемент класса?