2016-06-29 5 views
0

내가 통과 한 두 개의 매개 변수가 있지만 다음 예제에서이를 사용하는 방법을 잘 모르겠습니다. 가능한 경우 도와주세요.Meteor 전달 된 매개 변수에 어떻게 반응합니까?

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

그래서 여기 순간에 내 코드입니다, 내가 뭘하고 싶은 다음과 같은 것입니다 :

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

그러나 이것은 나에게 구문 오류가 있습니다.

UPDATE : 은 변경 후 내가 전달 된 정확한 값을 얻고 있지만, 상태는 어떤 이유로 업데이트되지 않은 : 당신은 당신의 국가의 구성 요소 반응에 저장 안

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}); 
    } 

답변

1

. 그러나 아직도 문제가, 그렇게 나머지를 사용하는 경우에만 이미지 렌더링에서 렌더링 변경되었습니다

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

덕분에 업데이트를 참조하십시오 대신, 렌더링을하고 실제로 render() 기능의 구성 요소를 렌더링하는 데 필요한 정보를 저장 – sophia

+0

@sophia'{layer : item}'은 당신이 생각하는대로하지 않는다고 생각합니다. 귀하의 예에서는 '{layer1 :'3.png '}'이 아니라 '{layer :'3.png '}'객체가됩니다. 대신 다음과 같이 시도하십시오 :'var newState = {}; newState [레이어] = item; this.setState (newState); ' – Timo

+0

완벽하게 작동합니다. 설명해 주셔서 감사합니다! – sophia

관련 문제