2017-12-31 35 views
1

React (Create React App 사용)에서 만드는 SET 게임의 경우 게임에 사용 된 81 개의 가능한 카드를 나타내는 81 개의 이미지 파일을 가져와야합니다. 파이썬 스크립트의 도움으로, 나는 수입React에서 가져온 긴 목록 피하기

import i0000 from './assets/0000.png' 
import i0001 from './assets/0001.png' 
[...] 
import i2221 from './assets/2221.png' 
import i2222 from './assets/2222.png' 

을이 매우 긴 목록을 작성하고 내가 각 카드를 나타내는 문자열을 사용하여 해당 변수를 참조 할 필요가 있기 때문에,이 개체가 :

const refs = { 
    '0000': i0000, 
    '0001': i0001, 
    [...] 
    '2220': i2220, 
    '2221': i2221, 
    '2222': i2222 
}; 

을 좋은 점은 지금은 모든 카드 이미지가

<img src={refs[card]} /> 

쉽게 호출 할 미리로드 그러나 나쁜 것은 내가 그것을 작동하게 말도 안되는 코드의 164 개 라인을 가지고있다 가지고있다. 나는 이미지를 가득 담은 디렉토리를 사전 캐시하고 참조하는 더 좋은 방법이 있는지 궁금합니다.

+0

이와 비슷한 것을 사용하실 수 있습니까? 그들은 webpack의 기능을 사용하여 디렉토리에서 모든 이미지를 가져옵니다. https://stackoverflow.com/a/42118921/9104680 –

+0

이 도움이됩니다. https://stackoverflow.com/questions/48560592/is-it-possible-to-import-a-group-of-images-as-an -array-create-react-app-projec/48561549 # 48561549 – Jayavel

답변

0

모든 이미지를 public 폴더로 이동하십시오 (예 : public/cards).

그런 다음 문을 사용하여 import 문을 사용하지 않고 참조 할 수 있습니다.

참조 된 이미지가 누락되었다고 경고 할 수 없으므로 Webpack에서 더 이상 경고 메시지가 표시되지 않으므로 해당 이미지가 있는지 확인하십시오.

+0

이미지가 미리 캐시되지 않았다는 뜻은 아니겠습니까? – wbruntra

+0

'webpack'은 단순히 가져온 이미지를'public/static/media' (기본값)로 묶습니다. 생성 된 HTML 코드에서 이미지는 위의 코드와 같은 방식으로 참조됩니다 (다른 디렉토리 및 파일 이름 제외). 브라우저의 '네트워크'탭으로 이동하여 페이지를 새로 고침하면됩니다. – riwu

+0

파일을 처리하기 위해 webpack을 설정하는 것이 중요하다고 생각하지만 표준 Create React App 설정이 (적어도 우리가'index.html'을 포함하는 것과 동일한 공용 폴더에 대해 이야기하고 있다면) 생각하지 않습니다. 위의 문제를 해결하는 좋은 방법입니다. – wbruntra

0

두 가지 접근 방법 :

첫째, 당신은 수동으로 다음과 같은 코드를 struturing하여 심판 객체를 생성을 없애기 :

imports * as refs from './assets' 
<img src={refs[card]} /> 

:

export i0000 from './assets/0000.png' 
export i0001 from './assets/0001.png' 

을 그리고 당신은 이러한 자산을 사용하고자하는 경우 둘째, 동적 요구 사항을 지원하는 번들링 시스템을 사용할 수 있습니다. https://webpack.github.io/docs/context.html#dynamic-requires

+0

첫 번째 점에서는 이미지를 렌더링하려고 할 때 액세스 할 수있는 모든 것이 카드를 나타내는 문자열이기 때문에 refs 객체에 의해 문제가 발생합니다. 따라서 수출은'i0000'이라는 변수이지만 카드는 '0000'입니다. 이 둘을 어떻게 관련시킬 수 있습니까? – wbruntra

+0

이렇게 : '' – gunn