#reactjs #typescript
Вопрос:
Я рассмотрел здесь несколько подобных вопросов, но не могу найти именно то, что ищу. У меня есть хитрый способ делать то, что я хочу, но я уверен, что есть лучший способ.
Я хочу создать компонент, который по сути является img
элементом, с несколькими изменениями. Существует библиотека ленивой загрузки под названием Lazysizes, вам нужно передать src
as data-src
и убедиться , что у изображения есть класс lazyload
. Я хотел создать компонент, который использует все обычные реквизиты HTML-изображений, но просто следит за тем, чтобы он правильно настраивал эти атрибуты
const LazyImage: FunctionComponent<React.ImgHTMLAttributes<HTMLImageElement>> = ({ ...props }) => {
const { src, alt, className } = { ...props };
delete props.src;
delete props.className;
return (
<img
className={`${className ?? ''} lazyload`}
data-src={src}
alt={alt}
data-sizes='auto'
{...props}
/>
);
};
Это то, к чему я пришел, потому что у меня было несколько проблем. Я хочу взять src
реквизит и передать его data-src
, не должно быть никаких src
реквизитов , переданных на самом деле img
, но, конечно, он проходит через это, так же, как className
.
Я просто подумал, что скопирую эти свойства и установлю их так, как мне нужно, а затем просто удалю их из реквизита, чтобы они не были перезаписаны, но я уверен, что есть лучший способ.
Любая помощь будет оказана.