ReactJS 및 공용 폴더의 이미지


94

나는 ReactJS에 새로 왔으며 구성 요소에서 이미지를 가져오고 싶습니다. 이 이미지는 공용 폴더 내에 있으며 반응 구성 요소에서 폴더에 액세스하는 방법을 모릅니다.

어떤 아이디어?

편집하다

Bottom.js 또는 Header.js 내에서 이미지를 가져오고 싶습니다.

구조 폴더는 다음과 같습니다.

여기에 이미지 설명 입력

웹팩을 사용하지 않습니다. 내가해야합니까 ?

편집 2

이미지와 나머지 자산을로드하는 데 웹팩을 사용하고 싶습니다. 따라서 내 구성 폴더에 다음 파일이 있습니다.

여기에 이미지 설명 입력

이미지 경로를 추가해야하는 위치와 방법은 무엇입니까?

감사


1
이 폴더는 무엇에 공개됩니까? 프로젝트 구조는 무엇입니까? 웹팩과 함께 이미지를 번들로 묶고 있습니까, 아니면 제외됩니까? 등 등 등 상황에 맞는 컨텍스트
조엘 Harkes

@JoelHarkes가 편집되었습니다.
Aceconhielo

포장되지 않은 것 같습니다. 시도해 보셨습니까 src="/images/logofooter.png"?
조엘 Harkes

질문과 관련이 없지만 어떤 아이콘 테마를 사용 하시나요?
Nermin

답변:


77

공개적으로 이미지를 참조하는 방법에는 두 가지 방법이 있습니다. 하나는 Homam Bahrani의 위와 같습니다.

사용

    <img src={process.env.PUBLIC_URL + '/yourPathHere.jpg'} /> 

그리고 이것이 작동하기 때문에 당신은 정말로 다른 것이 필요하지 않지만 이것도 작동합니다 ...

    <img src={window.location.origin + '/yourPathHere.jpg'} />

1
콘솔에 오류가 표시되지 않지만 이미지가 내가 가져온 것이 아닌 기본 이미지 아이콘으로 표시됩니다. 나는 당신이 언급 한 두 가지 사례를 모두 시도했습니다. 제발 도와주세요. 감사 !
Prakhar Mittal

148

이를 위해 웹팩 구성이 필요하지 않습니다 ..

구성 요소에서 이미지 경로를 제공하십시오. 기본적으로 react는 공개 디렉토리에서 알 수 있습니다.

<img src="/image.jpg" alt="image" />

2
이것은 나를 위해 일했습니다. 나는 이미지를 공개 디렉토리에 복사했습니다 .React는 자동으로 경로를 확인했습니다.
Vineeth Bhaskaran

2
그리고 이미지가 공용 폴더 내의 일부 폴더에 있으면 반응을 통해 그것을 찾을 수 있습니까?
Yuval Levy

2
네 @YuvalLevy.
Oliver Voutat

10

반응 문서는 문서에서 이것을 잘 설명 process.env.PUBLIC_URL하고 있으며 공용 폴더에있는 이미지와 함께 사용해야 합니다. 자세한 정보는 여기 를 참조 하십시오.

return <img src={process.env.PUBLIC_URL + '/img/logo.png'} />;

예, src dir 계층 구조 외부의 동적 이미지의 경우. 로고나 배경과 같은 정적 요소는 가져 오기 방법으로 도달 할 수 있습니다.
Juan Lanus

1
또한 이것은 create react 앱으로 빌드 된 앱을위한 것입니다
eballeste

1
콘솔에 오류가 표시되지 않지만 이미지가 내가 가져온 것이 아닌 기본 이미지 아이콘으로 표시됩니다. 제발 도와주세요.
Prakhar Mittal

4

1- 구성에 webpack을 사용하는 것이 좋지만 이미지 경로를 사용하면 반응이 공개 디렉토리에 있음을 알 수 있습니다.

<img src="/image.jpg">

2- React에서 표준 관행 인 webpack을 사용하려는 경우. webpack.config.dev.js 파일에서 이러한 규칙을 사용할 수 있습니다.

module: {
  rules: [
    {
      test: /\.(jpe?g|gif|png|svg)$/i,
      use: [
        {
          loader: 'url-loader',
          options: {
            limit: 10000
          }
        }
      ]
    }
  ],
},

그런 다음 반응 구성 요소에서 이미지 파일을 가져 와서 사용할 수 있습니다.

import image from '../../public/images/logofooter.png'

<img src={image}/>

2

React가 SPA라는 것을 알고 있습니다. JSX에서 적절한 HTML로 확장하여 루트 구성 요소에서 모든 것이 렌더링됩니다.

따라서 이미지를 사용하려는 위치는 중요하지 않습니다. 가장 좋은 방법은 절대 경로를 사용하는 것입니다 (공용 참조). 상대 경로에 대해 걱정하지 마십시오.

귀하의 경우 이것은 모든 곳에서 작동합니다.

"./images/logofooter.png"


1

여기에서 웹팩을 사용하여 생활을 편하게해야합니다. 구성에 아래 규칙을 추가하십시오.

const srcPath = path.join(__dirname, '..', 'publicfolder')

const rules = []

const includePaths = [
  srcPath
]
    // handle images
    rules.push({
      test: /\.(png|gif|jpe?g|svg|ico)$/,
      include: includePaths,
      use: [{
        loader: 'file-loader',
        options: {
          name: 'images/[name]-[hash].[ext]'
        }
      }

그런 다음 이미지를 반응 구성 요소로 간단히 가져올 수 있습니다.

import myImage from 'publicfolder/images/Image1.png'

아래와 같이 myImage를 사용하십시오.

<div><img src={myImage}/></div>

또는 이미지를 구성 요소의 로컬 상태로 가져 오는 경우

<div><img src={this.state.myImage}/></div> 

리소스 가져 오기를 수행하기 위해 webpack이 필요한지 의심됩니다.
Siya

@fshock, 작업을 더 쉽게 수행 할 수 있다고 말했습니다.
Umesh '

@Umesh 나는 Webpack과 함께하는 것을 선호합니다. 그래서 당신은 내가 설정에 규칙을 추가해야한다고 말했지만 어떤 파일입니까? path.js, polyfills.js, webpack.config.dev.js, webpack.config.prod.js 및 webpackDevServer.config.js가 있습니다. 여러분 모두가 구조를 볼 수 있도록 질문을 편집하겠습니다. 감사합니다
Aceconhielo

@Aceconhielo, 당신은 webpack.config.dev.js에 포함시켜야하고 webpack.config.prod.js
Umesh

0

이것을 사용할 수도 있습니다 .. 'yourimage.jpg'가 공용 폴더에 있다고 가정하면 작동합니다.

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