const imgs = Array.prototype.reduce.call(
document.querySelectorAll('img'),
(acc, img, i, arr) => {
if(img.previousElementSibling !== arr[i - 1])
acc.push([img]);
else
acc[acc.length - 1].push(img);
return acc;
},
[]
);
container.querySelectorAll('[data-title]').forEach((element) => {
// eslint-disable-next-line no-param-reassign
element.closest('[data-card]').style.display = element.innerText.toLowerCase().includes(val)
? 'block'
: 'none';
});
for(const element of container.querySelectorAll('[data-title]')) {
element.closest('[data-card]').style.display = element.innerText.toLowerCase().includes(val)
? 'block'
: 'none';
}
<link rel="icon">
, если такого элемента нет - /favicon.ico
, всё.)state
у тебя never[]
- т.е. массив без типа, в который нельзя положить ничего.const [data, setData] = useState<Data[]>([]);
data
, то он будет запускаться каждый раз как изменилась data
, а data
будет меняться каждый раз как он запущен. Т.е. получится бесконечная рекурсия. data
.url
я туда поставил, потому что это обычное поведение - меняется адрес запроса - делаем его, однако если url
всегда один, то, конечно, стоит его от-туда убрать. useEffect
с пустым массивом сработает один раз - при старте компонента.