2016-07-25 4 views
1

Gibt es eine geeignete Methode, einen State in React an einen anderen Status anzuhängen?Reaction-States an einen anderen Status anhängen

z. Wo der Staat von den gesamten Bundesstaat Katze, Hund und

this.state = { 
     Cat:true, 
     Dog:true, 
     Fish:true, 
     All: Cat, Dog, Fish 
    } 

Fische haben würde, ist dies, was ich habe zur Zeit:

var chosenAnimals = {}; 
    chosenAnimals["Cat"] = this.state.Cat; 
    chosenAnimals["Dog"] = this.state.Dog; 
    chosenAnimals["Fish"] = this.state.Fish; 

Gibt es einen besseren Weg, dies zu tun?

+0

Was ist 'Katze' usw.? Warum müssen Sie boolesche Flags speichern, wenn Sie bereits ein Array haben? –

+0

@YuryTarabanko ja Ich muss sowohl den Schlüssel als auch den Wert speichern – lost9123193

+0

Warum? Sie können überprüfen, ob etwas im Array ist, indem Sie sagen 'hasAnimal (Tier) {return this.state.animals.includes (Tier)}' –

Antwort

0

Um die Elemente in dem Zustand in das Array schieben alles, was Sie tun müssen, wäre:

var chosenAnimals = []; 
chosenAnimals.push(this.state.Cat, this.state.Dog, this.state.Fish); 

Wenn man sieht, was Array.push hat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) es gibt die Länge zurück, so in Ihrem Code vorausgesetzt, dass "auctedAnimals" 3 enthält und nicht das Array, nach dem Sie suchen. Aber nur einfach auf das Array zu drücken und es keinem (oder ihm selbst) zuzuweisen, fügt die Elemente in das Array ein.

+0

Dies ist sehr nah an der Lösung, die ich suche. Mein einziges Problem ist, dass es mir die Ganzzahl anstelle des Namens des Schlüssels gibt, würde ich in der Lage sein, so etwas zurückzugeben? selectedAnimals = [Hund: wahr, Katze: wahr] ...? – lost9123193

+0

Wenn Sie Namen für jeden Schlüssel haben möchten, warum verwenden Sie ein Array im Gegensatz zu einem Objekt? –

+0

@MichaelParker du hast Recht! Ich habe meinen Code oben korrigiert, ich frage mich, ob es möglich ist, ihn umzuformatieren – lost9123193