Skip to content

Commit 89074a4

Browse files
authored
Merge pull request #7255 from Fireentity/feat/partners-lazy-loading
Home implement lazy loading for partner images
2 parents e669938 + eb9b92e commit 89074a4

File tree

2 files changed

+43
-35
lines changed

2 files changed

+43
-35
lines changed

src/sections/Home/Partners-home/index.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
2-
import React from "react";
1+
import React, { useState, useEffect } from "react";
32
import { Container, Row } from "../../../reusecore/Layout";
43
import SectionTitle from "../../../reusecore/SectionTitle";
54
import PartnerItemWrapper from "./partnerSection.style";
@@ -27,6 +26,30 @@ const settings = {
2726
]
2827
};
2928

29+
const LazyPartnerImage = ({ partner }) => {
30+
const [imageSrc, setImageSrc] = useState("");
31+
32+
useEffect(() => {
33+
partner.imageLink().then(module => {
34+
setImageSrc(module.default);
35+
});
36+
}, [partner.imageLink]);
37+
38+
if (!imageSrc) return null;
39+
40+
return (
41+
<img
42+
className="partner-image"
43+
id={partner.name}
44+
loading="lazy"
45+
src={imageSrc}
46+
alt={partner.name}
47+
width={partner.imageWidth}
48+
height={partner.imageHeight}
49+
/>
50+
);
51+
};
52+
3053
const Projects = () => {
3154
return (
3255
<PartnerItemWrapper>
@@ -45,7 +68,7 @@ const Projects = () => {
4568
{partners.map((partner, index) => (
4669
<Link className="partner-card" to={partner.imageRoute} key={index}>
4770
<div className={partner.innerDivStyle}>
48-
<img className="partner-image" id={partner.name} loading="lazy" src={partner.imageLink} alt={partner.name} width={partner.imageWidth} height={partner.imageHeight} />
71+
<LazyPartnerImage partner={partner} />
4972
</div>
5073
</Link>
5174
))}

src/sections/Home/Partners-home/partners-home-data.js

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,136 +1,121 @@
1-
import redhat from "../../../assets/images/partners/redhat_black.svg";
2-
import uem from "../../../assets/images/partners/uem_black.svg";
3-
import utaustin from "../../../assets/images/partners/ut-austin_black.svg";
4-
import citrix from "../../../assets/images/partners/citrix.svg";
5-
import hashicorp from "../../../assets/images/partners/hashicorp_vertical_black.svg";
6-
import hpe from "../../../assets/images/partners/hpe_side_black.svg";
7-
import nitk from "../../../assets/images/partners/nitk_black.svg";
8-
import rackspace from "../../../assets/images/partners/rackspace_black.svg";
9-
import intel from "../../../assets/images/partners/intel-grey.svg";
10-
import vmware from "../../../assets/images/partners/vmware.svg";
11-
import cncf from "../../../assets/images/partners/cncf/horizontal/black/cncf-black.svg";
12-
import metabittrading from "../../../assets/images/partners/metabit-trading-logo-gray.svg";
13-
import digitalocean from "../../../assets/images/partners/digitalocean-black.svg";
14-
import citibank from "../../../assets/images/partners/citibank_black.svg";
15-
import ayapay from "../../../assets/images/partners/aya_pay_black.svg";
1+
// Remove ALL static imports at the top - delete these lines completely
162

173
export const partners = [
184
{
195
name: "Redhat",
20-
imageLink: redhat,
6+
imageLink: () => import("../../../assets/images/partners/redhat_black.svg"),
217
imageRoute: "/partners#redhat",
228
innerDivStyle: "partner__block__inner horizontal",
239
imageHeight: 90,
2410
imageWidth: 382,
2511
},
2612
{
2713
name: "Intel",
28-
imageLink: intel,
14+
imageLink: () => import("../../../assets/images/partners/intel-grey.svg"),
2915
imageRoute: "/partners#intel",
3016
innerDivStyle: "partner__block__inner",
3117
imageHeight: 533,
3218
imageWidth: 809,
3319
},
3420
{
3521
name: "University of Texas at Austin partnership with Layer5",
36-
imageLink: utaustin,
22+
imageLink: () => import("../../../assets/images/partners/ut-austin_black.svg"),
3723
imageRoute: "/partners#utaustin",
3824
innerDivStyle: "partner__block__inner horizontal",
3925
imageHeight: 78,
4026
imageWidth: 278,
4127
},
4228
{
4329
name: "Citrix",
44-
imageLink: citrix,
30+
imageLink: () => import("../../../assets/images/partners/citrix.svg"),
4531
imageRoute: "/partners#Citrix",
4632
innerDivStyle: "partner__block__inner",
4733
imageHeight: 144,
4834
imageWidth: 144,
4935
},
5036
{
5137
name: "Hashicorp partnership with Layer5",
52-
imageLink: hashicorp,
53-
imageRoute:
54-
"/company/news/layer5-and-hashicorp-launch-service-mesh-partnership",
38+
imageLink: () => import("../../../assets/images/partners/hashicorp_vertical_black.svg"),
39+
imageRoute: "/company/news/layer5-and-hashicorp-launch-service-mesh-partnership",
5540
innerDivStyle: "partner__block__inner",
5641
imageHeight: 113,
5742
imageWidth: 113,
5843
},
5944
{
6045
name: "Hewlett-Packard Enterprise",
61-
imageLink: hpe,
46+
imageLink: () => import("../../../assets/images/partners/hpe_side_black.svg"),
6247
imageRoute: "/partners#hpe",
6348
innerDivStyle: "partner__block__inner",
6449
imageHeight: 69,
6550
imageWidth: 178,
6651
},
6752
{
6853
name: "National Institute of Technology Karnataka",
69-
imageLink: nitk,
54+
imageLink: () => import("../../../assets/images/partners/nitk_black.svg"),
7055
imageRoute: "/partners#nitk",
7156
innerDivStyle: "partner__block__inner",
7257
imageHeight: 433,
7358
imageWidth: 409,
7459
},
7560
{
7661
name: "Rackspace Technology",
77-
imageLink: rackspace,
62+
imageLink: () => import("../../../assets/images/partners/rackspace_black.svg"),
7863
imageRoute: "/partners#rackspace",
7964
innerDivStyle: "partner__block__inner",
8065
imageHeight: 124,
8166
imageWidth: 400,
8267
},
8368
{
8469
name: "UEM",
85-
imageLink: uem,
70+
imageLink: () => import("../../../assets/images/partners/uem_black.svg"),
8671
imageRoute: "/partners#uem",
8772
innerDivStyle: "partner__block__inner",
8873
imageHeight: 164,
8974
imageWidth: 302,
9075
},
9176
{
9277
name: "VMware",
93-
imageLink: vmware,
78+
imageLink: () => import("../../../assets/images/partners/vmware.svg"),
9479
imageRoute: "/partners#VMware",
9580
innerDivStyle: "partner__block__inner",
9681
imageHeight: 31,
9782
imageWidth: 190,
9883
},
9984
{
10085
name: "CNCF",
101-
imageLink: cncf,
86+
imageLink: () => import("../../../assets/images/partners/cncf/horizontal/black/cncf-black.svg"),
10287
imageRoute: "/partners#cncf",
10388
innerDivStyle: "partner__block__inner ",
10489
imageHeight: 130,
10590
imageWidth: 120,
10691
},
10792
{
10893
name: "Metabit Trading",
109-
imageLink: metabittrading,
94+
imageLink: () => import("../../../assets/images/partners/metabit-trading-logo-gray.svg"),
11095
imageRoute: "/partners#metabittrading",
11196
innerDivStyle: "partner__block__inner ",
11297
imageHeight: 130,
11398
imageWidth: 120,
11499
},
115100
{
116101
name: "DigitalOcean",
117-
imageLink: digitalocean,
102+
imageLink: () => import("../../../assets/images/partners/digitalocean-black.svg"),
118103
imageRoute: "/partners#digitalocean",
119104
innerDivStyle: "partner__block__inner ",
120105
imageHeight: 533,
121106
imageWidth: 809,
122107
},
123108
{
124109
name: "Citibank",
125-
imageLink: citibank,
110+
imageLink: () => import("../../../assets/images/partners/citibank_black.svg"),
126111
imageRoute: "/partners#citibank",
127112
innerDivStyle: "partner__block__inner ",
128113
imageHeight: 130,
129114
imageWidth: 120,
130115
},
131116
{
132117
name: "Aya Pay",
133-
imageLink: ayapay,
118+
imageLink: () => import("../../../assets/images/partners/aya_pay_black.svg"),
134119
imageRoute: "/partners",
135120
innerDivStyle: "partner__block__inner ",
136121
imageHeight: 130,

0 commit comments

Comments
 (0)