2017-08-16 13 views
0

Ich Rendere 4 Divs aus den Daten, die ich von meinem Backend bekomme. Ich färbe diese divs entsprechend einer Statusänderung. Bisher mache ich es erfolgreich, aber das einzige Problem ist, dass alle 4 divs auf diese Weise eingefärbt werden können. Ich möchte vorheriges div uncolor wenn ich ein anderes div färbe. Wie kann ich das machen?Anwenden von Stil auf nur ein Div basierend auf Statusänderung

Mein Code

textVote() { 

     this.setState({ 

      vote_status: !this.state.vote_status 

     }) 

    } 

handleClick(id) { 

     let vote_object = { 
      voting_object: id, 
      post_id: this.props.postId 
     } 
     this.props.submitvote(vote_object) 
     this.textVote(); 

    } 


render() { 

     console.log("getVoteStatus", this.props.getVoteStatus) 

     let {contents, submitvote, postId} = this.props 

return (

     <div className="txt_vote_bar_div" style={{backgroundColor: this.state.vote_status ? '#0b97c4' : 'white'}}> 
      <p className="txt_vote_choice" style={{color: this.state.vote_status ? '#FFFFFF' : '#6a6a6a'}} 
       id={contents.post_poll_content_id} onClick={() => { 

        this.handleClick(contents.post_poll_content_id); 

        }}> {contents.content} </p> 
      <p className="txt_tot_votes" style={{color: this.state.vote_status ? '#FFFFFF' : '#6a6a6a'}}> 56% (Votes: {contents.votes}) </p> 
     </div> 
    ); 
    }; 

Wie kann ich es so nur ich ein div Hintergrundfarbe und Hintergrundfarbe entfernen, wenn i another.Thanks wählen.

+2

Was würde bestimmen, welches div sollte farbig sein? Ich kann nur ein div in diesem Beispiel sehen (Und es nicht innerhalb einer Renderfunktion?) – jye265

+0

@ jye265 in handleClick-Methode ich einen Zustand ändern.basierend auf diesem Zustand Hintergrund Färbung geschieht – CraZyDroiD

+0

Mapping/Looping diese Render-Funktion in sowieso? Wenn ja, an welchem ​​Punkt? –

Antwort

0

Von dem, was ich verstehe, versuchen Sie, mehrere div zu haben, die, wenn Sie jedes div klicken, wird es Farbe ändern und gleichzeitig andere div wird zurück zu seiner Standardfarbe ändern. Habe ich recht?

Meine Lösung wäre so etwas. Spezifizieren Sie jede Komponente als Nummer.

+0

Ich kartiere nur ein div. Das gleiche div wiederholt 4 mal nach Backend-Inhalt. Wenn es mehr als 4 Inhalte in meinem Backend gäbe, würde es mehr als 4 mal rendern. – CraZyDroiD

+0

Können Sie uns bitte den Code zeigen, der verwendet wird, um diese Komponente zu rendern? Die Logik, nur ein div gleichzeitig auszuwählen (indem nur vote_status in einer Komponente auf true gesetzt wird), wird in der Elternkomponente erledigt. – jye265

+0

@CraZyDroiD Ich habe meine Antwort bearbeiten, Sie können die Indexnummer verwenden –

Verwandte Themen