added banners preloader

This commit is contained in:
plebbitor
2023-03-05 14:26:40 +01:00
parent 2420908443
commit 6ca67fc775
3 changed files with 21 additions and 4 deletions
+10 -1
View File
@@ -1,4 +1,4 @@
import React, { useState } from 'react'; import React, { useState, useEffect } from 'react';
import { Route, Routes } from 'react-router-dom'; import { Route, Routes } from 'react-router-dom';
import { Helmet } from 'react-helmet-async'; import { Helmet } from 'react-helmet-async';
import Home from './components/Home'; import Home from './components/Home';
@@ -7,6 +7,7 @@ import Thread from './components/Thread';
import Catalog from './components/Catalog'; import Catalog from './components/Catalog';
import { createGlobalStyle } from 'styled-components'; import { createGlobalStyle } from 'styled-components';
import 'react-tooltip/dist/react-tooltip.css'; import 'react-tooltip/dist/react-tooltip.css';
import preloadImages from './utils/preloadImages';
export const BoardContext = React.createContext(); export const BoardContext = React.createContext();
@@ -40,6 +41,14 @@ export default function App() {
const [selectedThread, setSelectedThread] = useState(''); const [selectedThread, setSelectedThread] = useState('');
const [selectedStyle, setSelectedStyle] = useState('Yotsuba'); const [selectedStyle, setSelectedStyle] = useState('Yotsuba');
const imageUrls = Array.from({ length: 14 }, (_, index) => `/assets/banners/banner-${index + 1}.jpg`);
useEffect(() => {
preloadImages([...imageUrls]);
}, []);
return ( return (
<div> <div>
<Helmet> <Helmet>
+2 -2
View File
@@ -14,7 +14,7 @@ const ImageBanner = () => {
useEffect(() => { useEffect(() => {
setIsLoaded(false); setIsLoaded(false);
const img = new Image(); const img = new Image();
img.src = `/assets/banners/banner-${currentImage}.jpg?${Date.now()}`; img.src = `/assets/banners/banner-${currentImage}.jpg`;
img.onload = () => { img.onload = () => {
setIsLoaded(true); setIsLoaded(true);
}; };
@@ -22,7 +22,7 @@ const ImageBanner = () => {
return ( return (
<> <>
{isLoaded && <img id="banner-img" src={`/assets/banners/banner-${currentImage}.jpg?${Date.now()}`} alt="banner" />} {isLoaded && <img id="banner-img" src={`/assets/banners/banner-${currentImage}.jpg`} alt="banner" />}
</> </>
); );
}; };
+8
View File
@@ -0,0 +1,8 @@
const preloadImages = (imageUrls) => {
imageUrls.forEach((imageUrl) => {
const img = new Image();
img.src = imageUrl;
});
};
export default preloadImages;