2016-12-27 21 views
7

Używam urządzone-komponenty i próbuję ustawić obraz tła Podobnie jakimportowanie obrazów w stylu-React.js z komponentów

const HeaderImage= styled.div` 
    background-image: url('../../assets/image.png'); 
'; 

Ja również próbował bez cudzysłowu, tak jak

const HeaderImage= styled.div` 
     background-image: url(../../assets/image.png); 
'; 

W obu przypadkach ja uzyskać taki sam efekt

http://localhost:3000/assets/image.png Nie udało się załadować zasób: serwer odpowiedział ze statusem 404 (nie znaleziono)

Używam Richard Kall's react starter

Plik zdecydowanie znajduje się w podanej lokalizacji.

Czy ładuję niepoprawnie?

powinienem wspomnieć, jestem bardzo nowy w tym (React i stylu elementów składowych)

+0

Czy możesz spróbować otworzyć 'http: // localhost: 3000/assets/image.png' w przeglądarce? –

+0

Czy próbowałeś zaimportować obraz? Na przykład: import someName z "../../assets/image.png" "someName" może być zastąpione przez dowolną nazwę, którą chcesz – Swapnil

+1

ponieważ twój kod zostanie wykonany w przeglądarce, nie na serwerze, więc nie możesz uzyskać dostępu do systemu plików z przeglądarki. Możesz użyć "programu ładującego pliki" na potrzeby pakietu internetowego lub udostępnić folder statyczny. Myślę, że najłatwiejszy sposób to https://www.npmjs.com/package/file-loader –

Odpowiedz

23

Należy importować obrazy w następujący sposób (zakładając, że masz WebPack skonfigurowany do importowania zasoby multimedialne).

import myImage from '../../assets/image.png'; 

/* ... */ 

const HeaderImage = styled.div` 
    background-image: url(${myImage}); 
`; 
+0

Potrzebowałem jawnie podać również atrybuty 'height' i' width'. –

+0

@IsaacPak więc parametr 'background-size' css następnie? Traktuj stylizowany element jako normalny css. – Ilja

+0

tak. tylko standardowe praktyki css. –