Привет всем!
Код:
interface PropImage {
gif: undefined | object,
lang: string,
key: number,
};
const Image = ({ gif, lang, key }: PropImage) => {
const [loader, setLoader] = useState<boolean>(false);
const clickCopy = (elem: any) => {
navigator.clipboard.writeText(elem);
};
const loadImage = () => {
setLoader(true);
};
const [setRef, visible] = useOnScreen({ rootMargin: "0px"});
return (
<div className={s.wrapper} key={key} ref={setRef}>
<div
className={s.image}
data-title={lang === 'en' ? 'Click to copy the link to the gif' : 'Нажмите чтобы скопировать ссылку на гиф'}
>
<picture className={visible ? s.showPicture : s.nonePicture}>
<source type="image/webp" />
<img
src={gif.images.preview_webp.url === undefined ? gif.images.downsized_large.url : gif.images.preview_webp.url}
alt={gif.slug}
key={gif.id}
className={!loader ? s.gifNone : s.gif}
onClick={() => clickCopy(gif.images.original.url)}
onLoad={() => loadImage()}
crossOrigin="anonymous"
width="361"
height="203"
/>
</picture>
</div>
{!loader && <div className={s.loader}></div>}
</div>
);
};
1. В interface написал что gif должны принимать undefined или object, но оно выбивает ошибку что gif и то что внутри undefined: Object is possibly 'undefined' и Property 'images' does not exist on type 'object'.
2. Вот такая интересная конструкция:
const [setRef, visible] = useOnScreen({ rootMargin: "0px"});*
Не знаю как добавить setRef: , visible: boolean(и да администрация я искал как это сделать в гугл, не баньте тему плз)
* - (Я не понимаю как передаються переменные из массива в хук, буду благодарен если подскажете или скините ссылку на статью)