React.js-将对象追加到对象

时间:2018-09-19 16:43:07

标签: javascript reactjs

我正在尝试将对象添加到子对象中,但是出现一些错误,有些可以帮助我吗?这是我的代码,谢谢: Obs:我使用了'push'并收到错误消息msg:push未定义。

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

3 个答案:

答案 0 :(得分:2)

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

由此可见,对象和对象中的图像类型没有.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
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

好的,所以我对您使用的数据结构没有太多背景知识。但是,我假设您正在创建一个对象imagens,该对象应该保存用户上传的图像数组。 (在这种情况下,我假设用户上传了两张图片)

这是一个建议,因为我觉得您的分配方式在编程方面有点不好。

您可以将类型转换为-

cadastro.imagens = []

然后您可以像-

那样输入您的值
cadastro.imagens.push(this.state.img[1]?this.state.img[1]:"");

如果您不创建此对象,并且它已经存在,则可以执行-(再次使我感到不适,但是无论如何)

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