2016-08-28 2 views
64

Ich versuche, auf ein statisches Bild zuzugreifen, das innerhalb einer Inline-backgroundImage-Eigenschaft in React verwendet werden soll. Leider bin ich trocken gelaufen, wie das geht.Einstellen eines backgroundImage mit React Inline Styles

Im Allgemeinen Ich dachte, du hast nur wie folgt:

import Background from '../images/background_image.png'; 

var sectionStyle = { 
    width: "100%", 
    height: "400px", 
    backgroundImage: "url(" + { Background } + ")" 
}; 

class Section extends Component { 
    render() { 
    return (
     <section style={ sectionStyle }> 
     </section> 
    ); 
    } 
} 

Diese für <img> Tags funktioniert. Kann jemand den Unterschied zwischen den beiden erklären?

Beispiel:

<img src={ Background } /> funktioniert gut.

Vielen Dank!

Antwort

116

Die geschweiften Klammern in der backgroundImage-Eigenschaft sind falsch.

Wahrscheinlich verwenden Sie webpack zusammen mit Bilddateien Loader, so sollte Hintergrund sein bereits ein String: backgroundImage: "url(" + Background + ")"

Sie verwenden auch ES6 Ketten-Templates, wie unten die gleiche Wirkung zu erzielen:

backgroundImage: `url(${Background})` 
+0

Ich sollte das zu meiner Frage hinzugefügt haben. Ich habe eine Breite und Höhe eingestellt (100%/400px). Das Problem, das sich ergibt, liegt daran, wie reagieren statische Bilder, glaube ich. – Kris

+0

Das war es! Wenn Sie das eine Antwort machen, gebe ich Ihnen ein Häkchen :) – Kris

+0

Ehrfürchtig, froh, dass es funktioniert! Antwort aktualisiert :) – rauliyohmc

0

Sie können das Bild auch mithilfe der Funktion require() in die Komponente bringen.

<div style={ { backgroundImage: `url(require("images/img.svg"))` } }>

** die beiden Sätze von geschweiften Klammern Hinweis.

Verwandte Themen