/* eslint-disable react/no-unused-prop-types */ /* eslint-disable @typescript-eslint/no-unused-vars */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import CircularProgress from '@material-ui/core/CircularProgress'; import { makeStyles } from '@material-ui/core/styles'; import React, { useEffect, useRef, useState } from 'react'; import LazyLoad from 'react-lazyload'; const useStyles = makeStyles({ loading: { margin: '100px auto', height: '100vh', }, loadingImage: { padding: 'calc(50vh - 40px) calc(50vw - 40px)', height: '100vh', width: '100vw', backgroundColor: '#525252', marginBottom: 10, }, }); interface IProps { src: string index: number setCurPage: React.Dispatch> } function LazyImage(props: IProps) { const classes = useStyles(); const { src, index, setCurPage } = props; const [imageSrc, setImagsrc] = useState(''); const ref = useRef(null); const handleScroll = () => { if (ref.current) { const rect = ref.current.getBoundingClientRect(); if (rect.y < 0 && rect.y + rect.height > 0) { setCurPage(index); } } }; useEffect(() => { window.addEventListener('scroll', handleScroll); return () => { window.removeEventListener('scroll', handleScroll); }; }, [handleScroll]); useEffect(() => { const img = new Image(); img.src = src; img.onload = () => setImagsrc(src); }, []); if (imageSrc.length === 0) { return (
); } return ( {`Page ); } export default function Page(props: IProps) { const { src, index, setCurPage } = props; const classes = useStyles(); return (
)} > ); }