在 React.js 中加载本地图像

新手上路,请多包涵

我已经使用 create-react-app 安装了 React。它安装得很好,但我试图在我的一个组件中加载图像( Header.js ,文件路径: src/components/common/Header.js )但它没有加载。这是我的代码:

 import React from 'react';

export default () => {
  var logo1 = (
    <img
      //src="https://s3.amazonaws.com/codecademy-content/courses/React/react_photo-goose.jpg"
      src={'/src/images/logo.png'}
      alt="Canvas Logo"
    />
  );
  return (
    <div id="header-wrap">
      <div className="container clearfix">
        <div id="primary-menu-trigger">
          <i className="icon-reorder"></i>
        </div>

        <div id="logo">
          <a href="/" className="standard-logo" data-dark-logo='/images/logo-dark.png'>{logo1}</a>
          <a href="/" className="retina-logo" data-dark-logo='/images/logo-dark@2x.png'>
            <img src='/var/www/html/react-demo/src/images/logo@2x.png' alt="Canvas Logo" />
          </a>
        </div>
      </div>
    </div>
  );
}

如果我在我的 logo1 变量中将图像路径写为 src={require('./src/images/logo.png')} ,则会出现错误:

编译失败。

./src/Components/common/Header.js 中的错误

未找到模块:/var/www/html/wistful/src/Components/common 中的 ./src/images/logo.png

请帮我解决这个问题。让我知道我在这里做错了什么。

原文由 Atul 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 618
2 个回答

如果您对创建 React App 有疑问,我鼓励您阅读其 用户指南

它回答了这个问题以及您可能遇到的许多其他问题。

具体来说,要包含本地图像,您有两种选择:

  1. 使用进口
     // Assuming logo.png is in the same folder as JS file
    import logo from './logo.png';

    // ...later
    <img src={logo} alt="logo" />

这种方法很棒,因为所有资产都由构建系统处理,并将在生产构建中获取带有哈希的文件名。如果文件被移动或删除,您也会收到错误消息。

缺点是如果你有数百个图像,它会变得很麻烦,因为你不能有任意的导入路径。

  1. 使用公用文件夹:
     // Assuming logo.png is in public/ folder of your project
    <img src={process.env.PUBLIC_URL + '/logo.png'} alt="logo" />

这种方法一般不推荐,但是如果你有数百张图片并且一张一张导入它们太麻烦了,那就太好了。缺点是您必须考虑缓存破坏并自己注意移动或删除的文件。

希望这可以帮助!

原文由 Dan Abramov 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你想加载带有 local relative URL 的图像。 React 项目有一个默认的 public 文件夹。你应该把你的 images 文件夹放在里面。它会起作用。

在此处输入图像描述

原文由 Rivon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进