javascript - 反应中仅显示图像的“alt”
问题描述
我有一个小的 React 项目。在我从 InfoSection.elements.js 调用属性的地方,不幸的是,浏览器中只显示了 alt 部分,而不是图像本身。请帮我显示图像。我的代码如下。非常感谢 。
应用程序.js
import React from "react";
import GlobalStyle from "./globalStyles";
import Home from "./pages/HomePage/Home";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import { Navbar } from "./components";
function App() {
return (
<Router>
<GlobalStyle />
<Navbar />
<Switch>
<Route path="/" exact component={Home} />
</Switch>
</Router>
);
}
export default App;
数据.js:
export const homeObjOne = {
primary: true,
lightBg: false,
lightTopLine: true,
lightText: true,
lightTextDesc: true,
topLine: "Marketing Agency",
headline: "Lead Generation Specialist for Online Businesses",
description:
"We help business owners increase their revenue. Our team of unique specialist can help you achieve your business goals.",
buttonLabel: "Get Started",
imgStart: "",
img: require("../../images/svg-1.svg"),
alt: "Credit Card",
start: "",
};
export const homeObjTwo = {
primary: true,
lightBg: false,
lightTopLine: true,
lightText: true,
lightTextDesc: true,
topLine: "Instant Setup",
headline: "Extremely quick onboarding process",
description:
"Once you've joined, our team of specialist will reach out to you and get you set up in minutes.",
buttonLabel: "Learn More",
imgStart: "",
img: require("../../images/svg-2.svg"),
alt: "Vault",
start: "",
};
export const homeObjThree = {
primary: false,
lightBg: true,
lightTopLine: false,
lightText: false,
lightTextDesc: false,
topLine: "Sarah Jeni",
headline:
"Ultra helped me increase my revenue by over 3X in less than 3 months!",
description:
"Their team is wonderful! I can't believe I didn't start working with them earlier.",
buttonLabel: "View Case Study",
imgStart: "start",
img: require("../../images/profile.jpg"),
alt: "Vault",
start: "true",
};
export const homeObjFour = {
primary: true,
lightBg: false,
lightTopLine: true,
lightText: true,
lightTextDesc: true,
topLine: "Secure Database",
headline: "All your data is stored on our secure server",
description:
"You will never have to worry about your information getting leaked. Our team of security experts will ensure your records are kept safe.",
buttonLabel: "Sign Up Now",
imgStart: "start",
img: require("../../images/profile.jpg"),
alt: "Vault",
start: "true",
};
主页.js:
import React from "react";
import { homeObjOne, homeObjTwo, homeObjThree, homeObjFour } from "./Data";
import { InfoSection } from "../../components";
function Home() {
return (
<>
<InfoSection {...homeObjOne} />
<InfoSection {...homeObjThree} />
<InfoSection {...homeObjTwo} />
<InfoSection {...homeObjFour} />
</>
);
}
export default Home;
InfoSection.js:
import React from "react";
import { Link } from "react-router-dom";
import { Container, Button } from "../../globalStyles";
import {
InfoSec,
InfoRow,
InfoColumn,
TextWrapper,
TopLine,
Heading,
Subtitle,
ImgWrapper,
Img,
} from "./InfoSection.elements";
function InfoSection({
primary,
lightBg,
topLine,
lightTopLine,
lightText,
lightTextDesc,
headline,
description,
buttonLabel,
img,
alt,
imgStart,
start,
}) {
return (
<>
<InfoSec lightBg={lightBg}>
<Container>
<InfoRow imgStart={imgStart}>
<InfoColumn>
<TextWrapper>
<TopLine lightTopLine={lightTopLine}>{topLine}</TopLine>
<Heading lightText={lightText}>{headline}</Heading>
<Subtitle lightTextDesc={lightTextDesc}>{description}</Subtitle>
<Link to="/sign-up">
<Button big fontBig primary={primary}>
{buttonLabel}
</Button>
</Link>
</TextWrapper>
</InfoColumn>
<InfoColumn>
<ImgWrapper start={start}>
<Img src={img} alt={alt} />
</ImgWrapper>
</InfoColumn>
</InfoRow>
</Container>
</InfoSec>
</>
);
}
export default InfoSection;
InfoSection.elements.js :
import styled from "styled-components";
export const InfoSec = styled.div`
color: #fff;
padding: 160px 0;
background: ${({ lightBg }) => (lightBg ? "#fff" : "#101522")};
`;
export const InfoRow = styled.div`
display: flex;
margin: 0 -15px -15px -15px;
flex-wrap: wrap;
align-items: center;
flex-direction: ${({ imgStart }) => (imgStart ? "row-reverse" : "row")};
`;
export const InfoColumn = styled.div`
margin-bottom: 15px;
padding-right: 15px;
padding-left: 15px;
flex: 1;
max-width: 50%;
flex-basis: 50%;
@media screen and (max-width: 768px) {
max-width: 100%;
flex-basis: 100%;
display: flex;
justify-content: center;
}
`;
export const TextWrapper = styled.div`
max-width: 540px;
padding-top: 0;
padding-bottom: 60px;
@media screen and (max-width: 768px) {
padding-bottom: 65px;
}
`;
export const ImgWrapper = styled.div`
max-width: 555px;
display: flex;
justify-content: ${({ start }) => (start ? "flex-start" : "flex-end")};
`;
export const TopLine = styled.div`
color: ${({ lightTopLine }) => (lightTopLine ? "#a9b3c1" : "#4B59F7")};
font-size: 18px;
line-height: 16px;
font-weight: 700;
letter-spacing: 1.4px;
margin-bottom: 16px;
`;
export const Img = styled.img`
padding-right: 0;
border: 0;
max-width: 100%;
vertical-align: middle;
display: inline-block;
max-height: 500px;
`;
export const Heading = styled.h1`
margin-bottom: 24px;
font-size: 48px;
line-height: 1.1;
font-weight: 600;
color: ${({ lightText }) => (lightText ? "#f7f8fa" : "#1c2237")};
`;
export const Subtitle = styled.p`
max-width: 440px;
margin-bottom: 35px;
font-size: 18px;
line-height: 24px;
color: ${({ lightTextDesc }) => (lightTextDesc ? "#a9b3c1" : "#1c2237")};
`;
解决方案
我假设您使用 create-react-app 作为样板。如果是这样:
将图像放入 public/ 文件夹,然后放入某处。像资产/图像/
然后您可以更改
img: require("../../images/svg-2.svg"),
为
img: "assets/images/svg-2.svg" in Data.js,
,它应该可以工作。
require()
如果没有必要,我会避免。
推荐阅读
- python - Python 抓取两个特定字符之间的子字符串
- reactjs - 如何在 NextJS 中使用动态导入来导入 SDK
- c++ - 我被困在这个区域。我用这个做什么节目?
- html - 和有什么区别
- javascript - 使用另一个组件的 API 响应的数据更新 React 元素
- c++ - 如何在(字符串和向量)的地图中放置..?
- amazon-web-services - 在 Cloudwatch 洞察力中解析日志
- python - AttributeError:“NoneType”对象没有属性“删除”问题
- go - 在 Golang 中测试日志语句输出
- operating-system - 如何在 Qubes-OS 上禁用快速启动