简体   繁体   English

如何将 JSON 数据中的图像导入 create-react-app

[英]How to import images from JSON data into create-react-app

So I have JSON data that includes the path to the images thats located in my public folder (/public/images).所以我有 JSON 数据,其中包括位于我的公共文件夹 (/public/images) 中的图像的路径。 Like so,像这样,

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"
},

And based on reading a few other similar situations, this is what I've tried in my component;根据阅读其他一些类似情况,这就是我在我的组件中尝试过的;

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>
    )
}

But create-react-app throws the error "Error: Cannot find module '../public/images/test.jpg'但是 create-react-app 抛出错误“错误:找不到模块'../public/images/test.jpg'

Any hints?任何提示?

we can not use require dynamically.you can change your data like this.我们不能动态使用 require。您可以像这样更改您的数据。

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"
    }
]

Try this, it worked for me,试试这个,它对我有用,

First change the file/format name to .js instead of .json and edit the code like this.首先将文件/格式名称更改为.js而不是.json并像这样编辑代码。

 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 },

then import it into a component like this:然后将其导入到这样的组件中:

 {data.map((item) => { return( <div> <img src={item.image} width="" height="" alt=""/> </div> ) })}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM