Ive encountered an issue when trying to load a image well working in react. Ive tried a few solutions from installing webpack, to importing the img from its source file and have had no luck. When i go into inspector in developer mode it shows my alt has loaded but shows error for the img.Im getting no erros when i compile all the code nor any in the console in developer mode
Data.js file which is in multiple folders such as component>InfoSection>Data.js
export const homeObjOne = {
id: 'home',
lightBg: false,
lightText: true,
lightTextDesc: true,
topLine: 'test',
headline: 'tester in the making',
description: 'this will be the best website ever to exist',
buttonLabel: 'GO',
imgStart: true,
img: require('../../images/hacker.svg'),
alt: 'hacker',
dark: true,
primary: true,
darkText: false
}
index.js also in the same folder as the Data.js file
import React from 'react'
import {Button} from '../ButtonElements';
import {
InfoContainer,
InfoWrapper,
InfoRow,
Column1,
Column2,
TextWrapper,
TopLine,
Heading,
Subtitle,
BtnWrap,
ImgWrap,
Img
} from './InfoElements';
const InfoSection = ({lightBg, id, imgStart, topLine,lightText,
headline,darkText,description,buttonLabel,img,alt}) => {
return (
<>
<InfoContainer lightBg={lightBg} id={id}>
<InfoWrapper>
<InfoRow imgStart={imgStart}>
<Column1>
<TextWrapper>
<TopLine>{topLine}</TopLine>
<Heading lightText={lightText}>{headline}</Heading>
<Subtitle darkText={darkText}>{description}</Subtitle>
<BtnWrap>
<Button to='Home'>{buttonLabel}</Button>
</BtnWrap>
</TextWrapper>
</Column1>
<Column2>
<ImgWrap>
<Img src={img} alt={alt}/>
</ImgWrap>
</Column2>
</InfoRow>
</InfoWrapper>
</InfoContainer>
</>
)
}
export default InfoSection
InfoElements.js also in the same folder as the two files above
import styled from 'styled-components';
export const InfoContainer = styled.div`
color: #fff;
background: ${({lightBg}) => (lightBg ? '#f9f9f9' : '#010606')};
@media screen and (max-width: 768px){
padding: 100px 0;
}
`;
export const InfoWrapper = styled.div`
display: grid;
z-index: 1;
height: 860px;
width: 100%;
max-width: 1100px;
margin-right: auto;
margin-left: auto;
padding: 0 24px;
justify-content: cneter;
`;
export const InfoRow = styled.div`
display: grid;
grid-auto-columns: minmax(auto, 1fr);
align-items: center;
grid-template-areas: ${({imgStart}) => (imgStart ? `'col2 col1'` : `'col1 col2'`)};
@media screen and (max-width: 768px){
grid-template-areas: ${({imgStart}) => (imgStart ? `'col1' 'col2'` : `'col1 col1' 'col2 col2'` )}
}
`;
export const Column1 = styled.div`
margin-bottom: 15px;
padding: 0 15px;
grid-area: col1;
`;
export const Column2 = styled.div`
margin-bottom: 15px;
padding: 0 15px;
grid-area: col2;
`;
export const TextWrapper = styled.div`
max-width: 540px;
padding-top: 0;
padding-bottom: 60px;
`;
export const TopLine = styled.p`
color: #01bf71;
font-size: 16px;
line-height: 16px;
font-weight: 700;
letter-spacing: 1.4px;
text-transform: uppercase:
margin-bottom: 16px;
`;
export const Heading = styled.h1`
margin-bottom: 24px;
font-size: 48px;
line-height: 1.1;
font-weight: 600;
color: ${({lightText}) => (lightText ? '#f7f8fa' : '#010606')};
@media screen and (max-width: 480px){
font-size: 32px;
}
`;
export const Subtitle = styled.p`
max-width: 440px;
margin-bottom: 35px;
font-size: 18px;
line-height: 24px;
color: ${({darkText}) => (darkText ? '#010606' : '#fff')};
`;
export const BtnWrap = styled.div`
display: flex;
justify-content: flex-start;
`;
export const ImgWrap = styled.div`
max-width: 555px;
height: 100%;
`;
export const Img = styled.img`
width: 100%;
margin: 0 0 10px 0;
padding-right: 0;
`;
CodePudding user response:
It look like this as rendered, that's why not able to see image.
<img src="[object Object]" alt="fdsfgds">
You have to change way of accessing image.
import img from '../../images/hacker.svg';
<img src={img} alt="fdsfgds">
CodePudding user response:
So instead of using the Data.js file that holds the img which is then called to the Img fragment inside of the index.js file. I imported the path inside the index.js file instead and called that to the Img fragment