如何在React中引用本地图像?

Zip*_*Zip 111 reactjs

如何从本地目录加载图像并将其包含在reactjs img src标记中?

我有一个图像one.jpeg在与我的组件相同的文件夹内调用,我尝试了两个<img src="one.jpeg" /><img src={"one.jpeg"} />在我的render函数内,但图像没有出现.此外,我无法访问webpack config文件,因为项目是使用官方create-react-app命令行util 创建的.

更新:如果我首先导入图像import img from './one.jpeg'并在里面使用它img src={img},这是有效的,但我有很多图像文件要导入,因此,我想在表单中使用它们,img src={'image_name.jpeg'}.

Aps*_*wak 197

首先包装src {}

然后如果使用Webpack; 代替: <img src={"./logo.jpeg"} />

您可能需要使用require:

<img src={require('./logo.jpeg')} />


另一种选择是首先导入图像:

import logo from './logo.jpeg'; // with import

要么 ...

const logo = require('./logo.jpeg); // with require

然后插上...

<img src={logo} />

我建议使用此选项,尤其是在重复使用图像源时.

  • 注意不要忘记相对URL开头的`.`.应该是`<img rel="nofollow noreferrer" src = {require('./ one.jpeg')} />` (9认同)
  • 使用 `&lt;img src={require('./logo.jpeg').default} /&gt;` 对我有用 (7认同)
  • 这些方法是否会影响图像加载时间等性能?如果是这样,哪一个性能更好? (2认同)

Ars*_*oor 55

最好的方法是先导入图像然后再使用它.

import React, { Component } from 'react';
import logo from '../logo.svg';
export default class Header extends Component {
  render() {
    return (
      <div className="row">
        <div className="logo">
          <img src={logo} width="100" height="50" />
        </div>
      </div>
    );
  }
} 
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要在同一组件中重用,这是最好的方法,您可以在没有路径引用的情况下使用它.这是一个很好的做法@JasonLeach (5认同)
  • 为什么它是最好的方法? (2认同)

Har*_*hel 32

公共文件夹中创建一个资产文件夹并相应地放置图像路径。

<img className="img-fluid" 
     src={`${process.env.PUBLIC_URL}/assets/images/uc-white.png`} 
     alt="logo"/>
Run Code Online (Sandbox Code Playgroud)


Yas*_*iri 32

你需要使用 require 和 . 默认

 <img src={require('./logo.jpeg').default} />
Run Code Online (Sandbox Code Playgroud)

  • 这有效!.default 的目的是什么? (4认同)

Luc*_*uza 9

我遇到了同样的问题,经过研究,我设法通过将 JSON 数据放入 JS 中的常量中来解决它,这样我就能够导入图像并仅通知 JSON 对象中的导入。例子:

import imageImport from './image.png';

export const example = [
  {
    "name": "example",
    "image": imageImport
  }
]
Run Code Online (Sandbox Code Playgroud)
<Image source={example.image}/>
Run Code Online (Sandbox Code Playgroud)


Joa*_*lán 7

对于想要使用多个图像的人来说,一张一张地导入它们当然是一个问题。解决办法是将images文件夹移动到public文件夹中。因此,如果您在 public/images/logo.jpg 中有一张图像,您可以这样显示该图像:

function Header() {
  return (
    <div>
      <img src="images/logo.jpg" alt="logo"/>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

是的,不需要在源代码中使用/public/。

进一步阅读: https: //daveceddia.com/react-image-tag/


Abd*_*oiz 6

导入图像的最佳方式是...

import React, { Component } from 'react';

// image import
import CartIcon from '../images/CartIcon.png';

 class App extends Component {
  render() {
    return (
     <div>
         //Call image in source like this
          <img src={CartIcon}/>
     </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @toing_toing 你说你会“宁愿......”,但你没有说如何做到这一点。 (5认同)
  • 不支持 src/ 之外的相对导入。为此,您必须将图像保存在 src/ 中,不建议这样做 (2认同)

Had*_*Mir 6

您有两种方法可以做到这一点。

第一的

将图像导入到类的顶部,然后在<img/>元素中引用它,如下所示

import React, { Component } from 'react';
import myImg from '../path/myImg.svg';

export default class HelloImage extends Component {
  render() {
    return <img src={myImg} width="100" height="50" /> 
  }
} 
Run Code Online (Sandbox Code Playgroud)

第二

require('../pathToImh/img')您可以直接使用in元素指定图像路径,<img/>如下所示

import React, { Component } from 'react'; 

export default class HelloImage extends Component {
  render() {
    return <img src={require(../path/myImg.svg)} width="100" height="50" /> 
  }
}
Run Code Online (Sandbox Code Playgroud)


Shu*_*tri 5

您需要在其中包装图像源路径 {}

<img src={'path/to/one.jpeg'} />
Run Code Online (Sandbox Code Playgroud)

require如果使用,则需要使用webpack

<img src={require('path/to/one.jpeg')} />
Run Code Online (Sandbox Code Playgroud)


小智 5

const photo = require(`../../uploads/images/${obj.photo}`).default;
...
<img src={photo} alt="user_photo" />
Run Code Online (Sandbox Code Playgroud)

  • 请,当您回答问题时,请尝试解释您的建议以及原因,而不是简单地删除OP可能理解或可能不理解的一行代码。您可能还想参考[如何写出一个好的答案?](https://stackoverflow.com/help/how-to-answer) (3认同)

小智 5

将您的图像放在公用文件夹中或在您的公用文件夹中创建一个子文件夹并将您的图像放在那里。例如:

  1. 你把“compleative-reptile.jpg”放在公共文件夹中,然后你可以访问它
src={'/completative-reptile.jpg'}
Run Code Online (Sandbox Code Playgroud)
  1. 你把completative-reptile.jpgpublic/static/images,那么你就可以访问它
src={'/static/images/completative-reptile.jpg'}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您不想将图像放入公共文件夹中,请使用以下语法

 src={require("../../assets/images/img_envelope.svg").default}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

221329 次

最近记录:

6 年,1 月 前