当前位置: 首页 > 知识库问答 >
问题:

资源中用户文件夹的Src映像-反应

汪高岑
2023-03-14

在这里,我正在寻找一种方法,以动态的方式在我的react应用程序中使用来自Assets/images的文件夹中的图像。

下面是我的资产文件夹的树结构。

但在显示它的时候,图像却找不到了……

下面是我尝试的:

<img src={require(`../../images/user_logo/${userData.logo_name}`)} alt=""/>

<img src={`../../images/user_logo/${userData.logo_name}`} alt=""/>

我的反应组件:

import React, {useContext} from 'react';
import { Link } from 'react-router-dom';
import authAPI from "../services/authAPI";
import AuthContext from "../contexts/AuthContext"
import Logo from "../../images/VSLogo.svg";
import { toast } from 'react-toastify';

const Header = ({history}) => {

    const {isAuthenticated, setIsAuthenticated,userData} = useContext(AuthContext)


    const handleLogout = () => {
        authAPI.logout()
        setIsAuthenticated(false)
        toast.success('Vous êtes déconnecté !')
        history.push('/')
    }


    return( 
        <nav>
            <Link to="/"><img src={Logo} className="VSLogo"/></Link>
            <ul>
                <li className="navItem"><Link to="/teams">Equipes</Link></li>
                <li className="navItem"><Link to="/tournaments">Tournois</Link></li>
                <li className="navItem"><Link to="/esport">Esport</Link></li>
            </ul>
            {(!isAuthenticated && (
                <>
                    <Link to="/register" className="signUpBtn">S'inscrire</Link>
                    <Link to="/login" className="connexionBtn">Se connecter</Link>
                </>
            )) || (
                <>
                    <img src={`../../images/user_logo/${userData.logo_name}`} alt=""/>
                    <button onClick={handleLogout} className="connexionBtn">Déconnexion</button>  
                </>
            )}
        </nav>
    )
}

export default Header;

我的Webpack配置(它是Webpack encore)

var Encore = require('@symfony/webpack-encore');

// Manually configure the runtime environment if not already configured yet by the "encore" command.
// It's useful when you use tools that rely on webpack.config.js file.
if (!Encore.isRuntimeEnvironmentConfigured()) {
    Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
}

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .splitEntryChunks()

    .enableSingleRuntimeChunk()

    .cleanupOutputBeforeBuild()
    .enableBuildNotifications()
    .enableSourceMaps(!Encore.isProduction())
    .enableVersioning(Encore.isProduction())

    .configureBabelPresetEnv((config) => {
        config.useBuiltIns = 'usage';
        config.corejs = 3;
    })

    .enableSassLoader()

    .copyFiles({
        from: './assets/images',
        to: 'images/[path][name].[ext]',

        //to: 'images/[path][name].[hash:8].[ext]',
        pattern: /\.(png|jpg|jpeg|svg)$/

    })   

    //.addEntry('admin', './assets/js/admin.js')
;

module.exports = Encore.getWebpackConfig();

共有1个答案

羊新翰
2023-03-14

我通过将.default添加到require来解决我的问题,显然这是由于webpack的修改和es模块。

var pathToLogo = require(`../../../public/images/user_logo/${userData.logo_name}`).default;

 类似资料:
  • 有没有办法说服Gradle接受文件夹中的资源文件(如XML文件)? 这将是伟大的,因为我需要把我的JavaFXXML文件放在那里。。。

  • 资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于 ![](/images/image.jpg) 的方法访问它们。 对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组

  • 我正在尝试访问src/main/Resources/XYZ/view文件夹中的xsd,其中XYZ/view文件夹是由我创建的,文件夹具有我需要进行xml验证的abc.xsd。 当我每次尝试访问xsd时,结果为null, 我试过了, 1) 2) 以及我为获取资源或类加载器等而进行的更多跟踪。 最后我得到了xsd, 文件文件 = 新文件(新类路径资源(“/src/main/resources/XYZ/

  • 出于某种原因,我一直在GradleJavaFX项目中获得NPE。 我的文件夹结构非常基本。我在文件夹中有一个包含java文件的包。我的资源也在文件夹中。当我尝试加载它给了我一个NPE。 这是一个助手类。 从我调用:

  • 默认情况下,Maven根据标准目录布局检查resources文件夹。尽管最后一个罐子有问题。 它最终添加了src/main文件夹之外的所有资源,这使得我的JavaFX应用程序变得愚蠢。 因为我正在从src/main/resources文件夹加载图像,如下所示: 在最终的jar中,图像文件夹不在主文件夹下。我曾经有资源文件夹外面的文件夹,一切似乎都好,虽然我想遵循标准目录布局,所以我移动它。之前一切

  • 问题内容: 我正在尝试从软件包中的src /文件夹中获取图像,但是没有成功。 有人建议吗? 问题答案: 是否将其复制到构建代码的任何地方?作为一个在目录没有帮助,如果在执行时类是在目录(或jar文件)。 另请注意,如果您的课程在一个包中,则默认情况下它将相对于该包起作用。因此,如果您的包是foo.bar,它将在寻找。如果要使其绝对,则可以使用,也可以在字符串的开头放置前导: 要么 当然,如果目录