2016-06-29 6 views
0

Ich habe zwei Parameter, die ich bestanden habe, aber ich bin unsicher, wie man es im folgenden Beispiel verwendet. Bitte helfen Sie, wenn Sie können.Meteor Reagieren, wie man in Params verwendet?

updater(layer, item){ 
    this.setState({layer5: <img id="layer5" className="on-top img-responsive center-block" name="layer5" src="images\5.png" />}); 
} 

So, hier ist mein Code im Moment, was ich möchte, ist, etwas zu tun wie folgt aus:

updater(layer, item){ 
    this.setState({{layer}: <img id={layer} className="on-top img-responsive center-block" name={layer} src={item.src} />}); 
} 

Aber das gibt mir einen Syntaxfehler.

UPDATE: Nach den Änderungen erhalte ich die übergebenen richtigen Werte in der Zustand jedoch nicht aus irgendeinem Grund zu aktualisieren:

constructor(){ 
    super(); 
     this.renderView = this.updater.bind(this); 
     this.state = { 
       layer1: "1.png", 
       layer2: "", 
       layer3: "" 
     }; 
    } 


     updater(layer, item){ 
      console.log(layer); //shows as "layer1" 
      console.log(item); // shows as "3.png" 
      this.setState({layer: item}); 
    } 

Antwort

1

Sie sollten nicht in Ihrem Zustand Reagieren Komponenten speichern. Stattdessen speichert die Informationen, die das Rendering zu tun und macht tatsächlich die Komponenten in der render() Funktion:

updater(layer, item){ 
    this.setState({ 
     layer5: { 
      layer: layer, 
      item: item 
     } 
    }); 
} 

render() { 
    var layer5 = (
     <img 
      id={this.state.layer5.layer} 
      className="on-top img-responsive center-block" 
      name={this.state.layer5.layer} 
      src={this.state.layer5.item} 
      /> 
    ) 

     ... 
} 
+0

Dank siehe Update: geändert hat es so nur das Bild den Rest verwendet wird, wird gemacht in machen, noch Frage hat jedoch – sophia

+0

@sophia Ich denke '{layer: item}' macht nicht das, was du denkst. In Ihrem Beispiel würde dies das Objekt '{layer: '3.png'}', nicht '{layer1: '3.png'}' ergeben. Versuchen Sie stattdessen etwas wie folgt: 'var newState = {}; newState [Ebene] = Element; this.setState (newState); ' – Timo

+0

perfekt funktioniert super, danke für die Erklärung! – sophia

Verwandte Themen