React에서 로컬 이미지를 어떻게 참조합니까?


167

로컬 디렉토리에서 이미지를로드하고 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'}.


2
가능한 React
Vanuan


실제로 비슷한 문제가 있습니다. 내 이미지를 index.jsx 파일로 가져오고, 웹 팩에 로더가 있으며, 컴파일 사본이 제대로 작동합니다. 실제로 이미지 사본이 내 서버 / 공개 / JS에서 생성됩니다 폴더에 임의의 숫자가 있고 올바른 경로가 번 들러에 있지만 이미지를 시각화 할 수 없습니다. index.js에 쓴 것처럼 server / public / img가 아닌 server / public / js에서 생성되었다는 것도 이상한 일입니다.
Carmine Tambascia

답변:


305

먼저 src를 감싸십시오. {}

그렇다면 Webpack을 사용한다면; 대신에: <img src={"./logo.jpeg"} />

다음을 사용해야 할 수도 있습니다.

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


다른 옵션은 먼저 이미지를 다음과 같이 가져 오는 것입니다.

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

또는 ...

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

그런 다음 연결하십시오 ...

<img src={logo} />

이미지 소스를 재사용하는 경우 특히이 옵션을 사용하는 것이 좋습니다.


13
.상대 URL의 시작 부분 을 잊어 버리지 않도록주의하십시오 . 이어야한다<img src={require('./one.jpeg')} />
Nuhman

1
이러한 방법 중 어느 것이 이미지 로딩 시간과 같은 성능에 영향을 줍니까? 그렇다면 어떤 것이 현명한 성능입니까?
Inaam ur Rehman

1
@ انعامالرحمٰن-여기에 대한 의견 stackoverflow.com/questions/31354559/… 그러나 TL; DR은 성능 차이가 없습니다.
Apswak

여기 웹팩 4 이상에서 사용하는 로더가 대신 파일 하나 또는 이전의 URL 로더 사실이 없습니다
카마인 Tambascia

64

가장 좋은 방법은 이미지를 먼저 가져온 다음 사용하는 것입니다.

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

1
왜 가장 좋은 방법입니까?
Jason Leach

8
동일한 구성 요소에서 재사용해야하는 경우 가장 좋은 방법이며 경로 참조없이 사용할 수 있습니다. 좋은 연습입니다 @JasonLeach
Arslan shakoor

제이슨 리치는 청소기 방법입니다
아르 슬란 shakoor

8

당신은 당신에게 이미지 소스 경로를 포장해야합니다 {}

<img src={'path/to/one.jpeg'} />

사용하는 require경우 사용해야 합니다webpack

<img src={require('path/to/one.jpeg')} />

8

공용 폴더 안에 자산 폴더를 만들고 그에 따라 이미지 경로를 배치하십시오.

<img className="img-fluid" 
     src={`${process.env.PUBLIC_URL}/assets/images/uc-white.png`} 
     alt="logo"/>

감사합니다. 표시된 리소스를 기반으로 이미지를 동적으로 가져 오기 때문에 이미지가 폴더에 있거나 없을 수있는 상황에서 유용했습니다.
Sébastien De Varennes

4

이미지 가져 오기에 가장 좋은 방법은 ...

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

1
src / 외부의 상대적 가져 오기는 지원되지 않습니다. 이렇게하려면 이미지를 src /로 유지해야합니다. 권장하지 않습니다
toing_toing

@toing_toing 왜 src에 이미지를 보관하지 않는 것이 좋습니까? 공식 문서에는 이것이 사실 인 예가 있습니다 : facebook.github.io/create-react-app/docs/…
roob

웹팩 번들의 크기와 컴파일 시간을 늘리고 자산을 변경할 때마다 다시 컴파일해야하며 로딩 시간이 늘어납니다. 오히려 공용 폴더에 넣고 URL로 링크하고 싶습니다.
toing_toing 2013

4
@toing_toing 당신은 '아침에 ...'라고 말하지만 그렇게하는 방법은 말하지 않습니다.
Thomas Jay Rush

2

두 가지 방법이 있습니다.

먼저

클래스 위에 이미지를 가져온 다음 다음 <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" /> 
  }
} 

둘째

직접 사용하여 이미지의 경로를 지정할 수 있습니다 require('../pathToImh/img')<img/>이런 요소

import React, { Component } from 'react'; 

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


1

내 대답은 기본적으로 Rubzen의 답변과 매우 유사합니다. 이미지를 객체 값 btw로 사용합니다. 두 가지 버전이 나를 위해 작동합니다.

{
"name": "Silver Card",
"logo": require('./golden-card.png'),

또는

const goldenCard = require('./golden-card.png');
{ "name": "Silver Card",
"logo": goldenCard,

래퍼가없는 경우도 마찬가지입니다.

나는 또한 "가져 오기"솔루션을 확인했으며 경우에 따라 작동하지만 (React의 App.js 패턴에 적용되는 놀라운 것은 아니지만) 위와 같은 경우에는 그렇지 않습니다.


1

이것을 구현하는 다른 방법을 찾았습니다 (이것은 기능적 구성 요소입니다).

const Image = ({icon}) => {
   const Img = require(`./path_to_your_file/${icon}.svg`).ReactComponent;
   return <Img />
}

그것이 도움이되기를 바랍니다!


0
import image from './img/one.jpg';

class Icons extends React.Component{
    render(){
      return(
        <img className='profile-image' alt='icon' src={image}/>
    );
    }
}
export default Icons;

0

나는이 방법을 사용했고 작동합니다 ... 나는 당신이 유용하기를 바랍니다.

const logofooter = require('../../project-files/images/logo.png');

 return(
 <div className="blockquote text-center">
            <img src={logofooter} width="100" height="80" />
 <div/>
);

0
import React from "react";   
import image from './img/one.jpg';

class Image extends React.Component{
  render(){
    return(
      <img className='profile-image' alt='icon' src={image}/>
   );
  }
}

기본 이미지 내보내기


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.