Я получаю реквизиты из родительского контейнера и использую карусель в дочернем компоненте для показа изображений.Мой код выглядит так:
import React, { Component } from "react";
import ReactDOM from "react-dom";
import style from './ReactSlick.less';
import Carousel from 'nuka-carousel';
export default class ReactSlick extends Component {
constructor(props) {
super(props);
this.state = {
slides:this.props.pictureArray,
};
}}
renderImages() {
return this.state.slides.map(slide => {
return (
<div key={slide._id}><img src = {slide.image} /></div>
);
}, this);
}
return (
<div className = {style.container}>
<Carousel autoplay={true}>
{this.renderImages()}
</Carousel>
</div>
);
}}
Я в основном перепробовал все, что мог придумать, включая инициализацию чего-либо в componentDidMount.Использование условного рендеринга для проверки длины массива и отображения только при наличии чего-либо.Массив picture - это массив, содержащий изображения с идентификаторами, которые я хочу отобразить в карусели.Я получаю его из родительского контейнера следующим образом:
getImage= (key)=> {
let {getImage} = this.props;
let codeArray = [];
for (let i = 0; i < getImage._id.length; i++) {
api(getImage._id[i])
.then(res => codeArray.push(res)),
(error => console.log(error));}
return (
<Bubble
key={key}
side="left"
onImageClick={this.handleLogoClick}>
<ReactSlick pictureArray={codeArray} />
</Bubble>
);
}
Данные уже есть, когда они поступают в дочерний компонент, и я также дважды проверил их, выйдя из системы в конструкторе.Я попытался поместить API в componentDidMount и установить состояние также в дочернем компоненте, но это тоже не сработало.
Я протестировал те же данные, которые я извлекаю из API локально, и, похоже, работаетиз JSON, но когда я получаю его с удаленного сервера, он не работает.Единственный раз, когда он показывает данные с сервера, это когда я делаю изменения в коде, и он активно перезагружается, тогда как-то данные видны там, но не в первый раз.
Я думаю, что компонент не рендерится повторноили что-то.Есть ли способ принудительно обновить дочерний компонент, чтобы он работал?Я прочитал ответы, в которых говорится, что при вызове setState он автоматически запускает повторную визуализацию, но в моем случае, похоже, ничего не работает.