serii81
@serii81
Я люблю phр...

Как вставить в свойство объекта атрибут из функции?

Добрый день.
Начал изучать React и столкнулся с проблемой.
Есть две функции, одна добавляет лайки, другие звездочки для рейтингов.

this.onToggleLike = (id) => {
	this.setState(({data}) => {
		const index = data.findIndex(elem => elem.key === id);
		const old = data[index];
		const newElem = {...old, like: !old.like};
		const newArr = [...data.slice(0, index), newElem, ...data.slice(index + 1)];
		return {
			data: newArr
		}
	});
}

this.onToggleImportant() = (id) => {
	this.setState(({data}) => {
		const index = data.findIndex(elem => elem.key === id);
		const old = data[index];
		const newElem = {...old, important: !old.important};
		const newArr = [...data.slice(0, index), newElem, ...data.slice(index + 1)];
		return {
			data: newArr
		}
	});
}


Как видно, в обеих функциях отличается в константе newElem like и important.

Я решил сделать одну функцию и использовать ее.

this.toggleElemInData = (el, id) => {
	this.setState(({data}) => {
		const index = data.findIndex(elem => elem.key === id);
		const old = data[index];
		const newElemProps = {
			el: !old[el]
		};
		const newElem = {...old, ...newElemProps};
		const newArr = [...data.slice(0, index), newElem, ...data.slice(index + 1)];
		return {
			data: newArr
		}
	});
}

this.onToggleImportant = (id) => {
	this.toggleElemInData('important', id);
}

this.onToggleLike = (id) => {
	this.toggleElemInData('like', id);
}


Только у меня почему-то не вставляется атрибут el в качестве свойства для newElem.
5f3ab9ae2e5d7024522743.png

Строго не судите, мне javascript трудно дается.

Заранее благодарен за ответ.
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
const newElemProps = {
  [el]: !old[el]
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 03:11
500 руб./за проект
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект