Я пытаюсь выяснить, как визуализировать набор элементов div без повторной визуализации всего списка при добавлении нового набора.
Итак, у меня есть компонент с состоянием.Внутри указанного компонента с состоянием у меня есть функция, которая A, получает список идентификаторов записей, а B, делает запрос к каждому из этих идентификаторов записей и отправляет результаты в массив.Вот так:
getArticles = () => {
axios.get(`${api}/topstories.json`)
.then(items => {
let articles = items.data;
let init = articles.slice(0,50);
init.forEach(item => {
axios.get(`${post}/${item}.json`)
.then(article => {
this.setState({ articles: [...this.state.articles, article.data]});
});
})
});
}
Затем у меня есть вторая функция, которая берет эту информацию и выводит ее в список постов.Вот так:
mapArticles = () => {
let articles = this.state.articles.map((item, i) => {
let time = moment.unix(item.time).fromNow();
return(
<section className="article" key={i}>
<Link className="article--link" to={`/posts/${item.id}`}/>
<div className="article--score">
<FontAwesomeIcon icon="angle-up"/>
<p>{item.score}</p>
<FontAwesomeIcon icon="angle-down"/>
</div>
<div className="article--content">
<div className="article--title">
<h1>{item.title}</h1>
</div>
<div className="article--meta">
{item.by} posted {time}. {item.descendants ? `${item.descendants} comments.` : null}
</div>
</div>
<div className="article--external">
<a href={item.link} target="_blank">
<FontAwesomeIcon icon="external-link-alt"/>
</a>
</div>
</section>
)
});
return articles;
}
Затем я использую {this.mapArticles()}
внутри функции рендеринга для возврата соответствующей информации.
Однако, когда приложение загружает новый фрагмент данных, оноотрисовывает весь список, вызывая тонну рывков.Т.е. когда первый запрос заканчивается, он отображает первый div.Когда второй запрос заканчивается, он повторно отображает первый div и отображает второй.Когда третий запрос завершается, он повторно отображает первый и второй и отображает третий.
Есть ли способ, чтобы React распознал, что div с этим ключом уже существует, и его следует игнорировать, когда состояниеменяется и функция запускается снова?