У меня есть приложение, похожее на сообщение, где пользователь может добавлять комментарии к смайликам к сообщению, для которых у меня есть метод:
addEmoji = (newEmoji) =>{
// mark if new emoji is already in the array or not
let containsNewEmoji = false;
let authors = []
authors.push(this.props.comment.author.name)
console.log(this.props.comment.author.name)
console.log(authors)
// recreate emojis array
let newEmojis = this.state.emojis.map(emoji => {
// if emoji already there, simply increment count
if (emoji.id === newEmoji.id) {
containsNewEmoji = true;
return {
...newEmoji,
...emoji,
count: emoji.count + 1,
authors: [...authors, authors]
};
}
// otherwise return a copy of previous emoji
return {
...emoji
};
});
console.log(authors)
// if newEmoji was not in the array previously, add it freshly
if (!containsNewEmoji) {
newEmojis = [...newEmojis, {...newEmoji, count: 1, authors: [...authors, authors]}];
}
// set new state
this.setState({ emojis: newEmojis,
showEmoji: true});
}
Как показано в комментариях метода к коду, каждый смайлик- отображается только один раз, в противном случае переменная count будет увеличиваться, чтобы отображаться под каждым комментарием.
Я хотел бы добавить эту функцию, чтобы сохранить массив с указанным именем пользователя, добавившего смайлики.
имя пользователя указано как опора
this.props.comment.author.name
поэтому я попытался создать массив для добавления имен 7
let authors = []
authors.push(this.props.comment.author.name)
проблема в том, что он перезаписывается при каждой передаче нового экземпляра emoji, я пытался сохранить его в объекте
return {
...newEmoji,
...emoji,
count: emoji.count + 1,
authors: [...authors, authors] // i want to save the old copy of authors and pass the new name
};
newEmojis = [...newEmojis, {...newEmoji, count: 1, authors: [...authors, authors]}]; // and then set the object in the end
На данный момент массив каждый раз перезаписывается, но могу ли я установить параметр внутри объекта?