2014-02-10 15 views
194

Wie referenzieren Sie in JSX einen Wert von props von innerhalb eines angegebenen Attributwerts?Reagieren JSX: Zugriff Requisiten in Anführungszeichen

Zum Beispiel:

<img className="image" src="images/{this.props.image}" /> 

Der resultierende HTML-Ausgabe ist:

<img class="image" src="images/{this.props.image}"> 

Antwort

339

reagieren (oder JSX) unterstützt keine variable Interpolation innerhalb eines Attributwert, aber Sie können einen beliebigen JS Ausdruck setzen innerhalb geschweiften Klammern als der gesamte Attributwert, so funktioniert das:

<img className="image" src={"images/" + this.props.image} /> 
+1

Das funktioniert perfekt - vielen Dank für die schnelle Antwort. – cantera

+18

Was ist mit Backtips in es6? –

+0

Ich habe diese Lösung ausprobiert und sie hat mich an dem Fehler vorbeigeführt, den ich bekommen habe. Aber jetzt bekomme ich einen Fehler, der besagt, dass 'dies' ein reserviertes Wort ist. Ich bin wie ich weiß, dass es ist, deshalb benutze ich es, lol @ Sophie Alpert –

37

Wenn du bist Verwendung von JSX mit Harmony, können Sie dies tun:

<img className="image" src={`images/${this.props.image}`} /> 

Hier schreiben Sie den Wert src als Ausdruck.

+0

das ist etwas, das schwer zu finden ist. und für wiederverwendbare Container ist dies ein Muss – holms

165

Wenn Sie die es6 Vorlage Literale verwenden möchten, müssen Sie Klammern um den Markierungen auch:

<img className="image" src={`images/${this.props.image}`} /> 
+0

zukünftige ES6 Template-Literale – zloctb

+0

Die von Backticks eingeschlossene Zeichenfolge ist ein "Vorlage-Literal": https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals –

1

Für Menschen, auf der Suche nach Antworten WRT auf ‚Karte‘ Funktion und dynamische Daten, hier ist ein Arbeitsbeispiel.

<img src={"http://examole.com/randomview/images" + each_actor['logo']} /> 

Dies gibt die URL als "http://examole.com/randomview/images/2/dp_pics/182328.jpg" (random Beispiel)

4

Best Practices sind Getter-Methode für das hinzufügen:

getImageURI() { 
    return "images/" + this.props.image; 
} 

<img className="image" src={this.getImageURI()} /> 

Dann, wenn Sie später mehr Logik, Sie können den Code reibungslos pflegen.

0

Hinweis: In Reaktion können Sie Javascript-Ausdruck in geschweifte Klammer setzen. Wir können diese Eigenschaft in diesem Beispiel verwenden.
Hinweis: Ein Blick auf unter Beispiel:

class LoginForm extends React.Component { 

    constructor(props) { 
    super(props); 

    this.state = {i:1}; 
    } 

    handleClick() { 
    this.setState(prevState => ({i : prevState.i + 1})); 

    console.log(this.state.j); 
    } 


    render() { 

    return (
     <div> 
     <p onClick={this.handleClick.bind(this)}>Click to change image</p> 
     <img src={'images/back'+ this.state.i+'.jpg'}/> 
     </div> 
    ); 

    } 
} 
Verwandte Themen