Javascript Reactjs-将对象附加到对象

Javascript Reactjs-将对象附加到对象,javascript,reactjs,Javascript,Reactjs,我试图将一个对象添加到子对象中,但我遇到了一些错误,有些可以帮助我吗?这是我的代码,谢谢: Obs:我使用了“推送”并得到错误消息:推送未定义 if(this.state.upd != '' && this.state.image1 == ''){ cadastro.imagens.push({1:this.state.img[1]?this.state.img[1]:""}); }else { cadastro.imagens.push({1:this.state.i

我试图将一个对象添加到子对象中,但我遇到了一些错误,有些可以帮助我吗?这是我的代码,谢谢: Obs:我使用了“推送”并得到错误消息:推送未定义

if(this.state.upd != '' && this.state.image1 == ''){
  cadastro.imagens.push({1:this.state.img[1]?this.state.img[1]:""});
}else {
   cadastro.imagens.push({1:this.state.image1});
}
如果我这样使用,它会订阅其他的

if(this.state.upd != '' && this.state.image2 == ''){
  cadastro.imagens = {2:this.state.img[2]?this.state.img[2]:""};
}else {
   cadastro.imagens = {2:this.state.image2};
}
由此我们可以看出,object和object中的imagens类型没有.push()方法
但是为了达到你想要的结果,你可以

cadastro.imagens[1] = this.state.img[1]?this.state.img[1]:"";

所以你的代码看起来像

if(this.state.upd != '' && this.state.image1 == ''){
  cadastro.imagens[1] = this.state.img[1]?this.state.img[1]:""
}else {
   cadastro.imagens[1] = this.state.image1
}

Push仅对数组有效,对对象无效。您也可以使用符号加上键名来覆盖对象键值。像下面这样

const cadastro = { imagens:{0:'', 1:'',2:'',3:'', },lat:''};

//ovverride key value using .notation
cadastro.imagens.1 = this.state.img[1]?this.state.img[1]:"";


if(this.state.upd != '' && this.state.image1 == ''){
  cadastro.imagens.1 = this.state.img[1]?this.state.img[1]:"";
}else {
   cadastro.imagens.1 = this.state.image1;
}

好的,我对您使用的数据结构没有太多背景知识。但是,我假设您正在创建一个对象
imagens
,该对象应该包含用户上传的一组图像。(在本例中,我假设用户上载两幅图像)

这里有一个建议,因为我觉得您分配它的方式在编程方面看起来很糟糕

您可以将对象类型强制转换为如下数组-

cadastro.imagens = []
然后你可以把你的价值观像这样

cadastro.imagens.push(this.state.img[1]?this.state.img[1]:"");
如果您没有创建这个对象,并且它已经存在,那么您可以这样做-(我同样感觉不好,但无论如何)


请与我们分享您的整个州和
cadastro
数据。另外,如果你再解释一点你想在这里做什么,它会更好。让cadastro={imagens:{0:'',1:'',2:'',3:'',},lat:'',lat:'}cadastro是这样的代码太大了,无法放在这里,但我尝试做的基本操作是,如果用户已经有一个图像,而不选择其他图像,我要上传旧图像,否则我会得到新图像并设置新对象我想知道细节,因为我不知道
cadastro
在哪里?如果它处于状态,那么分配一些属性意味着你正在改变状态,你不应该这样做。“除此之外,操纵物体并不难。”贾德科斯塔很高兴听到这一点。如果此ans帮助了您,那么您也可以接受此ans:-)
cadastro.imagens.push(this.state.img[1]?this.state.img[1]:"");
cadastro.imagens[1] = this.state.img[1]?this.state.img[1]:"";