Есть state:
constructor(props) {
super(props);
this.state = {
Objects: {
name: '',
type: '',
massVariant: [
{
form: '1',
photoUpload: '1',
count: '1',
countMass: '1',
},
{
form: '2',
photoUpload: '2',
count: '2',
countMass: '2',
}
]
},
}
}
Есть две кнопки, кликая по одной надо добавлять новый объект с пустыми значениями в massVariant, а кликая по другой удалять.
Я написал эти функции, но почему то ни не работают.
Удаление:
clickDelete = (index) => {
let newMass = [...this.state.Objects.massVariant];
newMass.splice(index, 1);
this.setState({
massVariant: newMass
})
}
Добавление:
addRowVar = () => {
const Objects= [ ...this.state.Objects]
const element = {
form: '',
photoUpload: '',
count: '',
countMass: 'tset1'
}
const newArray = [ ...Objects.massVariant, element ];
this.setState({ Objects: newArray });
}
Где я ошибся?
Вы не правильно обновляете стейт
this.setState({ Objects: newArray });
полностью перезапишет ключ Objects
, сделав его массивом
Нужно что-то вроде этого:
addRowVar = () => {
const Objects = { ...this.state.Objects } // это объект, не массив!
const element = {
form: '',
photoUpload: '',
count: '',
countMass: 'tset1'
}
this.setState({ Objects: {
...Objects,
massVariant: [ ...Objects.massVariant, element ] // а вот это массив
}});
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте есть вот такое задание: Пользователь вводит последовательность строк, состоящих из слов и чисел, разделенных пробеламиПризнак...
У меня есть код, который исправляет первую букву каждого слова в инпуте на заглавную букву, очень полезно для инпутов именТак вот данный код...
Как объединить все вложенные массивы в один и если будут повторяющиеся элементы, то убрать ихНапример 12,13 буду встречаться в итоговом едином...