[英]ReactJS: How to load SVG dynamically from an const object?
我正在尝试通过 const object 动态加载 SVG,以便在其他块中轻松重用。 但是 SVG 没有显示。
当我在顶部导入 svg 并将其加载到<Img src='../../images/svg-1.svg' />
它的工作但我想动态导入它以重用它并轻松更改 svg其他的块。
请检查以下代码:
数据.js
export const homeObjOne = {
id: 'about',
lightBg: false,
lightText: true,
lightTextDesc: true,
topLine: 'Premium Bank',
headLine: 'Unlimited Transactions with zero fees',
description: 'Get access to our exclusive app that allows you to send unlmited transactions without getting charged any fees.',
buttonLabel: 'Get started',
imgStart: false,
img: require('../../images/svg-1.svg'),
alt: 'Car',
dark: true,
primary: true,
darkText: false
}
InfoSection.js
import React from 'react';
import { Button } from '../ButtonCSS';
import {
InfoContainer,
InfoWrapper,
InfoRow,
Column1,
TextWrapper,
TopLine,
Heading,
Subtitle,
BtnWrap,
ImgWrap,
Column2,
Img,
} from './InfoSectionCSS';
const InfoSection = ({
lightBg,
id,
imgStart,
topLine,
lightText,
headLine,
darkText,
description,
buttonLabel,
img,
alt,
primary,
dark,
}) => {
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'
smooth={true}
duration={500}
spy={true}
exact='true'
offset={-80}
dark={dark}
primary={primary}
>
{buttonLabel}
</Button>
</BtnWrap>
</TextWrapper>
</Column1>
<Column2>
<ImgWrap>
<Img src={img} alt={alt} />
</ImgWrap>
</Column2>
</InfoRow>
</InfoWrapper>
</InfoContainer>
</>
);
};
export default InfoSection;
主页.js
import React, { useState } from 'react';
import Navbar from '../components/Navbar/Navbar';
import Sidebar from '../components/Sidebar/Sidebar';
import HeroSection from '../components/HeroSection/Hero';
import InfoSection from '../components/InfoSection/InfoSection';
import { homeObjOne, homeObjTwo, homeObjThree } from '../components/InfoSection/Data';
const Home = () => {
const [isOpen, setIsOpen] = useState(false);
const toggle = () => {
setIsOpen(!isOpen);
};
return (
<>
<Sidebar isOpen={isOpen} toggle={toggle} />
<Navbar toggle={toggle} />
<HeroSection />
<InfoSection {...homeObjOne} />
<InfoSection {...homeObjTwo} />
<InfoSection {...homeObjThree} />
</>
);
};
export default Home;
SVG 应该在右侧。
我找到了解决它的方法。
刚刚在img: require('../../images/svg-1.svg')
就像这样img: require('../../images/svg-1.svg').default,
export const homeObjOne = {
id: 'about',
lightBg: false,
lightText: true,
lightTextDesc: true,
topLine: 'Premium Bank',
headLine: 'Unlimited Transactions with zero fees',
description: 'Get access to our exclusive app that allows you to send unlmited transactions without getting charged any fees.',
buttonLabel: 'Get started',
imgStart: false,
img: require('../../images/svg-1.svg').default,
alt: 'Car',
dark: true,
primary: true,
darkText: false
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.