Meteor Reactjs Сова Карусель

Это мой основной компонент, который я рендерю av из базы данных mini mongo. Моя текущая проблема заключается в том, что я отправляю this.props.av в карусель, которую он не загружает. Я заметил, что реквизит становится видимым только после того, как компонент повторно отрисовывает себя. В displayAvCarousel, если я передам массив avCarouselList. Карусель будет работать без проблем. Но если я перехожу со статического массива на массив из бэкэнда, возникает проблема с загрузкой карусели. Я не уверен, в чем может быть проблема. Я думал, что данные не загружаются с подключенным компонентом. Какие-либо предложения. Спасибо

import React, { Component } from 'react';
import { Meteor } from 'meteor/meteor';
import { createContainer } from 'meteor/react-meteor-data';
import { Carousel } from 'react-responsive-carousel';
import AV from './AV';

class FullAVList extends Component {
  constructor(props) {
  }
  displayAvList() {
    let avList = this.props.av;

    return avList.map((av) => {
     return <AV key = {av._id} av = {av} />;
    });
  }
  // filter sponsored events
  displayAvCarousel(){

    const avCarouselList = [
      {
        id: 1,
        img: "./images/av-img-header.jpg",
        s: false,
      },
      {
        id: 2,
        img: "./images/av-img-header.jpg",
        s: true,
      },
    ];


    let avFilters = this.props.av.filter((av) => av.s == true);

    return this.props.av.map((av) => {
      return (
        <div>
          <img src = {av.img} />
        </div>
      );
    });
  }

  render() {
    return (
      <div>
        <Carousel showArrows = {true} legend = {false} showThumbs = {false} infiniteLoop = {true} swipeable = {true}>
          {this.displayAvCarousel}
        </Carousel>
        {this.displayAvList()}
      </div>
    );
  }
}

export default createContainer(() => {
  Meteor.subscribe('autoevents');

  return {
    av: AV.find({ av: true }, { sort: { createdAt: -1 } }).fetch(),
  };
}, FullAVList);

Две вещи, которые стоит попробовать: {this.displayAvCarousel} -> {this.displayAvCarousel ()} (добавить скобки). И createContainer устарел, вы должны использовать withTracker guide.meteor.com/react.html#using-withTracker

rooch84 05.09.2018 10:29

Спасибо, чувак, я думаю, что это могло быть так.

David Pishchik 05.09.2018 18:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
77
1

Ответы 1

Пусть ваша функция displayAvList получит аргумент массива от props. Причина, по которой ничего не отображается, заключается в том, что, когда компонент визуализирует, свойства еще не прибыли.

 render(){
 const {av} = this.props;
   // av represents your array which you can pass to the 
    // function displayAvList
 return (
    Carousel showArrows = {true} legend = {false} 
     showThumbs = {false} infiniteLoop = {true} swipeable= 
    {true}>
      {this.displayAvCarousel}
       {this.displayAvList(av)
    </Carousel>

 })}

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