Я пытаюсь добавить объект к подобъекту, но у меня есть ошибки, некоторые могут мне помочь? это мой код, спасибо: Замечания: я использовал "push" и получил сообщение об ошибке: "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};
}
let cadastro = {imagens: {0: '', 1: '', 2: '', 3: '',}, lat: ''} Кадастро - это что-то вроде этого
Код слишком велик, чтобы поместить здесь, но основное, что я пытаюсь сделать, это то, что у пользователя уже есть изображение и не выбирает другое, я возьму загруженное старое изображение, иначе я получу новое изображение и установлю новый объект
Я прошу подробностей, потому что не знаю, где находится cadastro? Если он находится в состоянии, то присвоение некоторых свойств означает, что вы изменяете состояние, и вам не следует этого делать. В остальном манипулировать объектами не так уж и сложно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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
}
@JaderCosta рад это слышать. Если этот ответ помог вам, вы также можете принять этот ответ :-)
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.imagens[1] = this.state.img[1]?this.state.img[1]:"";
Пожалуйста, поделитесь с нами всем своим состоянием и данными
cadastro. Кроме того, если вы немного подробнее объясните, что вы пытаетесь здесь сделать, будет лучше.