#javascript #arrays #reactjs
#javascript #массивы #reactjs
Вопрос:
Я хотел бы ввести новое состояние массива объектов, одно из свойств объекта должно иметь значение предыдущего свойства объекта.
Я пробовал этот код (ниже), но он говорит «TypeError: не удается прочитать свойство ‘country_id’ неопределенного»
state ={
countryControls: [{
id: null,
country_id: '',
description: '',
city_id: '',
}]
}
addControls () {
var countryControls = this.state.countryControls;
countryControls.push({
id: null,
country_id:countryControls.length > 0 ?
countryControls[ countryControls.length - 2 ].country_id : '',
description: '',
city_id: '',
});
this.setState({ countryControls: countryControls});
}
Я ожидаю, что результатом этого будет что-то вроде:
первый объект в массиве
значение country_id = 5 (вводится пользователем вручную)
второй объект в массиве
значение country_id = 5 (автоматическое значение из последнего ввода пользователя)
Комментарии:
1. Это означает
countryControls
иметь только1
элемент.2. привет, @MaheerAli, сначала да, но есть кнопка добавления, при нажатии на которую будет нажат другой объект, который будет добавлен в этот массив … и этот новый объект должен иметь то же значение реквизита, что и предыдущий.
3. Видите, я добавил ответ. проверьте, работает ли это
Ответ №1:
Когда длина массива будет 1
равна , тогда countryControls[ countryControls.length - 2 ]
и будет undefined
.Вы должны только минус 1
.
addControls () {
var countryControls = this.state.countryControls;
countryControls.push({
id: null,
country_id:countryControls.length > 0 ?
countryControls[ countryControls.length - 1 ].country_id : '',
description: '',
city_id: '',
});
this.setState({ countryControls: countryControls});
}
Комментарии:
1. @louiekim Рассмотрите возможность принятия ответа, если вы удовлетворены ответом.
2. уже сделал … Там написано Спасибо за отзыв! Голоса, поданные лицами с репутацией менее 15, записываются, но не изменяют публично отображаемый результат публикации …. еще раз спасибо