2016-07-25 10 views
1

状態をReactの別の状態に追加する適切な方法はありますか?反応状態を別の状態に追加する

例えば、すべての状態は、猫、犬や魚の状態

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

を持っているでしょうどここれは私が現在持っているものです。

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

は、これを行うのより良い方法はありますか?あなたがない(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)何のArray.pushを見れば、それはあなたのコード内ので、長さを戻っ

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

:あなたがする必要があるだろう、すべてが配列に状態の要素をプッシュする

+0

「猫」とは何ですか?なぜあなたはすでに配列を持っている場合、booleanフラグを格納する必要がありますか? –

+0

@YuryTarabankoはいキーと値の両方を保存する必要があります – lost9123193

+0

なぜですか? 'hasAnimal(animal){return this.state.animals.includes(animal)}' –

答えて

0

selectedAnimalsには、あなたが探している配列ではなく3つが含まれています。しかし、単に配列をpushして何か(またはそれ自身)に割り当てるのではなく、配列に項目を追加します。

+0

これは私が探している解決策に非常に近いものです。私の唯一の問題は、キーの名前の代わりに整数を返すということです。このようなものを返すことができますか? selectedAnimals = [Dog:true、Cat:true] ...? – lost9123193

+0

各キーに名前を付けるには、なぜオブジェクトではなく配列を使用しているのですか? –

+0

@MichaelParkerあなたは正しいです!上記のコードを修正しました。リファクタリングが可能かどうかは疑問です – lost9123193

関連する問題