当前位置: 首页 > 面试题库 >

在ReactJs中基于动态路径加载图像

戚英逸
2023-03-14
问题内容

我正在尝试在正在制作的购物车中显示图像,但没有显示出来。我必须导入每个图像吗?我知道我的路径很好,因为它以前可以工作。我认为我的product.js文件中可能有问题,但我无法弄清楚。

这是我的Product.js

import React, { Component, PropTypes } from 'react';

class Product extends Component {
    handleClick = () => {
        const { id, addToCart, removeFromCart, isInCart } = this.props;

        if (isInCart) {
            removeFromCart(id);
        } else {
            addToCart(id);
        }
    }

    render() {
        const { name, price, currency, image, url, isInCart } = this.props;

        return (
            <div className="product thumbnail">
                <img src={image} alt="product" />
                <div className="caption">
                    <h3>
                        <a href={url}>{name}</a>
                    </h3>
                    <div className="product__price">{price} {currency}</div>
                    <div className="product__button-wrap">
                        <button
                            className={isInCart ? 'btn btn-danger' : 'btn btn-primary'}
                            onClick={this.handleClick}>
                            {isInCart ? 'Remove' : 'Add to cart'}
                        </button>
                    </div>
                </div>
            </div>
        );
    }
}

Product.propTypes = {
    id: PropTypes.number.isRequired,
    name: PropTypes.string.isRequired,
    price: PropTypes.number,
    currency: PropTypes.string,
    image: PropTypes.string,
    url: PropTypes.string,
    isInCart: PropTypes.bool.isRequired,
    addToCart: PropTypes.func.isRequired,
    removeFromCart: PropTypes.func.isRequired,
}

export default Product;

数据来自此product.js

const data = [
    {
        id: 1,
        name: 'Reggae Blaster',
        price: 10,
        currency: 'GOLD',
        image: '../assets/blaster_1.png'
    },
    {
        id: 2,
        name: 'Juicy Blaster',
        price: 10,
        currency: 'GOLD',
        image: 'images/02.jpg'
    },
    {
        id: 4,
        name: 'Full Body Reggae Armor',
        price: 20,
        currency: 'GOLD',
        image: 'images/04.jpg'
    },
    {
        id: 6,
        name: 'Reggae Spikes Left',
        price: 5,
        currency: 'GOLD',
        image: 'images/06.jpg'
    },
    {
        id: 5,
        name: 'Reggae Spikes Right',
        price: 5,
        currency: 'GOLD',
        image: 'images/05.jpg'
    },
    {
        id: 3,
        name: 'Black Full Body Reggae Armor',
        price: 20,
        currency: 'GOLD',
        image: 'images/03.jpg'
    }
];

export default data;

我正在提取所有数据,但图像没有显示


问题答案:

假设您使用的是webpack,则需要导入图像以使其像

<img src={require('images/06.jpg')} alt="product" />

现在您的图像数据是动态的,直接指定导入路径,例如

<img src={require(image)} alt="product" />

不起作用。

但是,您可以通过使用模板文字来导入图像,例如

<img src={require(`${image}`)} alt="product" />

所以你的代码看起来像

render() {
    const { name, price, currency, image, url, isInCart } = this.props;

    return (
        <div className="product thumbnail">
            <img src={require(`${image}`)} alt="product" />
            <div className="caption">
                <h3>
                    <a href={url}>{name}</a>
                </h3>
                <div className="product__price">{price} {currency}</div>
                <div className="product__button-wrap">
                    <button
                        className={isInCart ? 'btn btn-danger' : 'btn btn-primary'}
                        onClick={this.handleClick}>
                        {isInCart ? 'Remove' : 'Add to cart'}
                    </button>
                </div>
            </div>
        </div>
    );
}

PS还请确保您的图像路径是相对于您要导入它们的文件的。



 类似资料:
  • 问题内容: 如何从库本身中获取共享库的路径? 换句话说,假设使用来加载库X ,如何从库本身内部访问用于加载所述库的路径? 请注意,我不能首先将这个库加载到该库中。 更新: 这是使用静态变量的方法: 问题答案: 动态链接器实际上搜索几个位置以找到每个动态库。其中包括(来自man ld.so): 环境变量给定的路径 烘焙到二进制文件中的路径将加载条目下的库 缓存文件/etc/ld.so.cache /

  • 我已经设法在ZF2上传图像文件,并在数据库中存储完整的路径。路径看起来像这样: /home/ubuntu/NetBeansProjects/project/data/upload/event_5554a7b600c0f。jpg 项目结构是Zend骨架应用程序: 项目数据上传事件_5554a7b600c0f。jpg模块公共 在我看来,我呼吁: $event- 如果我在project public i

  • 我在使用Glide加载图像时有问题。当我试图使用Android默认的它起作用了,但我遇到了内存泄漏问题。 然后我尝试了Glide图像加载器来避免内存泄漏问题。但是我不能使用文件路径加载图像。 我也尝试加载Uri,但也不起作用。 然后我试着从URL Glide加载图像加载URL图像。效果很好。 有人能帮我找到解决这个问题的方法吗?

  • 本文向大家介绍vue中img src 动态加载本地json的图片路径写法,包括了vue中img src 动态加载本地json的图片路径写法的使用技巧和注意事项,需要的朋友参考一下 目录: 注意:本地json文件和json文件里的图片地址都必须写在static 静态文件夹里;否则json文件里的url地址找不到。 major_info.json文件里的图片路径写法 页面通过v-bind的方式加载:

  • 问题内容: 我有一个column ,一列和作为实例化路径的一列。 看起来像 我需要根据此表进行一些查询。 我需要做的查询是 选择所有9个孩子 可以正常工作,直到您将ID替换为1或19,因为开头没有ID 。 将选择数字以1结尾的所有行,因此1、11、21、31、211等 将在第1行或第19行中正常工作 所以测试员; 我能提出最好的建议吗? 选择9,但没有子儿的直接孩子 对于这个测试仪; 会很好的工作

  • 问题内容: 可通过API访问的服务器数据库中的示例实例: 场景1: 用户视图和控制器:http:// localhost / john-smith 方案2: 公司视图和控制器:http:// localhost / microsoft- technologies 现在,我想根据从API调用到服务器的数据段创建动态状态。 我写了一个 假想的代码。 但是我没有办法实现 问题答案: 有一个工作的傻瓜。