我正在尝试将对象添加到子对象中,但是出现一些错误,有些可以帮助我吗?这是我的代码,谢谢: 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};
}
答案 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]:"";