如何将图像从 JSON 数据导入到 create-react-app
How to import images from JSON data into create-react-app
所以我有 JSON 数据,其中包括位于我的 public 文件夹 (/public/images) 中的图像路径。像这样,
const data = [
{
"key": 1,
"name": "Goal Squad",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
},
{
"key": 2,
"name": "WesterosCraft",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
},
根据阅读其他一些类似情况,这就是我在我的组件中尝试过的方法;
class Card extends Component {
render() {
const { name, description, image } = this.props;
const items = Object.values(this.props.techs);
console.log(this.props)
return (
<CardWrapper>
<Row>
<Column colmd6 colsm12>
<Header card>{name}</Header>
<TechList>{items.map(tech =>
tech
).join(' / ')}</TechList>
<Text regular>{description}</Text>
<Button>Visit Website</Button>
</Column>
<Column colmd6 colsm12>
<img src={require(`${image}`)} alt={name}/>
</Column>
</Row>
</CardWrapper>
)
}
但是 create-react-app 抛出错误“错误:找不到模块'../public/images/test.jpg'
有什么提示吗?
我们不能使用 require dynamically.you 可以像这样更改您的数据。
const data = [
{
"key": 1,
"name": "Goal Squad",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": require("../public/images/test.jpg")
},
{
"key": 2,
"name": "WesterosCraft",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": require("../public/images/test.jpg")
}
]
module.exports = [
{
"key": 1,
"name": "Goal Squad",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
},
{
"key": 2,
"name": "WesterosCraft",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
}
]
试试这个,对我有用,
首先将 file/format 名称从 .json
更改为 .js
,然后像这样编辑代码。
import React from 'react';
import TestIMG1 from "../public/images/test.jpg";
import TestIMG2 from "../public/images/test.jpg";
export const data = [
{
key: 1,
name: "Goal Squad",
techs: ["React & Redux", "Express", "MySQL"],
description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
image: TestIMG1
},
{
key: 2,
name: "WesterosCraft",
techs: ["React & Redux", "Express", "MySQL"],
description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
image: TestIMG2
},
然后像这样将其导入到组件中:
{data.map((item) => {
return(
<div>
<img src={item.image} width="" height="" alt=""/>
</div>
)
})}
所以我有 JSON 数据,其中包括位于我的 public 文件夹 (/public/images) 中的图像路径。像这样,
const data = [
{
"key": 1,
"name": "Goal Squad",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
},
{
"key": 2,
"name": "WesterosCraft",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
},
根据阅读其他一些类似情况,这就是我在我的组件中尝试过的方法;
class Card extends Component {
render() {
const { name, description, image } = this.props;
const items = Object.values(this.props.techs);
console.log(this.props)
return (
<CardWrapper>
<Row>
<Column colmd6 colsm12>
<Header card>{name}</Header>
<TechList>{items.map(tech =>
tech
).join(' / ')}</TechList>
<Text regular>{description}</Text>
<Button>Visit Website</Button>
</Column>
<Column colmd6 colsm12>
<img src={require(`${image}`)} alt={name}/>
</Column>
</Row>
</CardWrapper>
)
}
但是 create-react-app 抛出错误“错误:找不到模块'../public/images/test.jpg'
有什么提示吗?
我们不能使用 require dynamically.you 可以像这样更改您的数据。
const data = [
{
"key": 1,
"name": "Goal Squad",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": require("../public/images/test.jpg")
},
{
"key": 2,
"name": "WesterosCraft",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": require("../public/images/test.jpg")
}
]
module.exports = [
{
"key": 1,
"name": "Goal Squad",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
},
{
"key": 2,
"name": "WesterosCraft",
"techs": ["React & Redux", "Express", "MySQL"],
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
"image": "../public/images/test.jpg"
}
]
试试这个,对我有用,
首先将 file/format 名称从 .json
更改为 .js
,然后像这样编辑代码。
import React from 'react';
import TestIMG1 from "../public/images/test.jpg";
import TestIMG2 from "../public/images/test.jpg";
export const data = [
{
key: 1,
name: "Goal Squad",
techs: ["React & Redux", "Express", "MySQL"],
description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
image: TestIMG1
},
{
key: 2,
name: "WesterosCraft",
techs: ["React & Redux", "Express", "MySQL"],
description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
image: TestIMG2
},
然后像这样将其导入到组件中:
{data.map((item) => {
return(
<div>
<img src={item.image} width="" height="" alt=""/>
</div>
)
})}