Reactjs 将React状态附加到另一个状态

Reactjs 将React状态附加到另一个状态,reactjs,state,Reactjs,State,在React中是否有适当的方法将一个状态附加到另一个状态 所有人的状态都是猫、狗和鱼的状态 this.state = { Cat:true, Dog:true, Fish:true, All: Cat, Dog, Fish } 这就是我目前拥有的: var chosenAnimals = {}; chosenAnimals["Cat"] = this.state.Cat; chosenAnimals["Dog"] = th

在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;

有更好的方法吗

要将处于状态的元素推送到数组中,只需执行以下操作:

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

如果查看array.push()的作用,它将返回长度,因此在您提供的代码中,chosenAnimals将包含3,而不是您要查找的数组。但只需在数组上调用push,而不将其分配给任何对象(或其本身),即可将项目添加到数组中。

要将处于状态的元素推送到数组中,您只需执行以下操作:

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

如果查看array.push()的作用,它将返回长度,因此在您提供的代码中,chosenAnimals将包含3,而不是您要查找的数组。但是,只需在数组上调用push,而不将其分配给任何对象(或自身),即可将项目添加到数组中。

什么是
Cat
等等?如果已经有数组,为什么需要存储布尔标志?@YuryTarabanko是的,我需要存储键和值为什么?您可以使用say
hasamal(animal){返回this.state.animals.includes(animal)}
@YuryTarabanko检查数组中是否有东西,我不确定是否遵循了。我不想检查它是否在数组中,我想把这些对象放在this.state.All中,不管它们是真是假。我想将这些对象合并为一个名为All的单个对象,最终传递给动作创建者。@lost9123193如果是这种情况,那么我只需将单个动物存储在数组中,然后将它们从状态组合到数组中,传递给动作创建者或在动作创建者中组合它们。没有理由在状态下存储数据两次。什么是
Cat
etc?如果已经有数组,为什么需要存储布尔标志?@YuryTarabanko是的,我需要存储键和值为什么?您可以使用say
hasamal(animal){返回this.state.animals.includes(animal)}
@YuryTarabanko检查数组中是否有东西,我不确定是否遵循了。我不想检查它是否在数组中,我想把这些对象放在this.state.All中,不管它们是真是假。我想将这些对象合并为一个名为All的单个对象,最终传递给动作创建者。@lost9123193如果是这种情况,那么我只需将单个动物存储在数组中,然后将它们从状态组合到数组中,传递给动作创建者或在动作创建者中组合它们。没有理由在状态中存储数据两次。这与我正在寻找的解决方案非常接近。我唯一的问题是它给我的是整数而不是键的名称,我能返回这样的值吗?chosenAnimals=[狗:正确,猫:正确]?如果你想为每个键命名,为什么要使用数组而不是对象?@MichaelParker你说得对!我修复了上面的代码,我想知道是否有可能重构它。这与我正在寻找的解决方案非常接近。我唯一的问题是它给我的是整数而不是键的名称,我能返回这样的值吗?chosenAnimals=[狗:正确,猫:正确]?如果你想为每个键命名,为什么要使用数组而不是对象?@MichaelParker你说得对!我修复了上面的代码,我想知道是否可以重构它