Я использую бесконечную прокрутку, стиль применялся только к уже отрендеренным элементам массива, а не к недавно отрендеренным элементам массива... как я могу применить это ко всем будущим элементам массива рендеринга? Я получаю данные в виде массива. Сначала я повторял элементы массива и добавлял цвет фона и цвет текста к уже отрисованным элементам, но по мере работы бесконечной прокрутки он отображал другой набор элементов массива, поэтому как я могу применить этот цвет фона и цвет текста ко всем компонентам?
const toggleModefunc = (props) => {
if (Mymode === "light") {
setMymode("dark")
document.body.style.backgroundColor = "#042743";
const elements = document.querySelectorAll(".card-body")
elements.forEach(elems => {
elems.style.backgroundColor = "#042743";
elems.style.color = "#fff"
});
}
else {
setMymode("light")
document.body.style.backgroundColor = "white";
const elements2 = document.querySelectorAll(".card-body")
elements2.forEach(elems => {
elems.style.backgroundColor = "#fff";
elems.style.color = "black"
});
}
}
// Функция карты
{this.state.articles.map((element) => {
return (
<div className="col-md-4" key={element.url}>
<Newsitem
title={element.title? element.title: ""}
description={
element.description? element.description: ""
}
imageurl={element.urlToImage}
newsUrl={element.url}
author={element.author}
date={element.publishedAt}
source={element.source.name}
/>
</div>
Решение проблемы
Технически вы можете сделать что-то подобное в реакции
Давайте просто предположим, что NewsItem является.card-body и isDarkможет представлять ваше состояние. Я предполагаю, что по умолчанию для вашего состояния установлено значение lighttheme.
Состояние изменится в зависимости от нажатия кнопки, что изменит цвет элементов в массиве.
{
this.state.articles.map((element) => (
<div className="col-md-4" key={element.url}>
<Newsitem
className={`card-body ${isDark?: 'dark-class': 'fff'`}} // maybe you can add a custom css class for dark theme
title={element.title? element.title: ""}
description={element.description? element.description: ""}
imageurl={element.urlToImage}
newsUrl={element.url}
author={element.author}
date={element.publishedAt}
source={element.source.name}
/>
</div>
));
}
Комментариев нет:
Отправить комментарий