У меня есть функция, которая сохраняет элементы в массиве по клику.Я имею в виду, когда я нажимаю на элемент, этот элемент отправляет функции, которая сохраняет его в массиве:
private renderTags(tag: Tags, index: number) {
console.log('SELECTED TAG: ' + this.state.selectedTags.length);
return <div>
<div onClick={(e) => { e.stopPropagation(); this.collectTags (tag); }}>
<p
className={styles.tag}
># {tag.title} <i className="ms-Icon ms-Icon--CirclePlus"></i></p>
</div>
</div>
}
Я вижу, что на самом деле элементы находятся в массиве selectedTags.Это функция collectTags:
private collectTags(tag: Tags): any {
this.setState({ savingSettings: true, tagActive: true });
let selectedTags: Tags[] = this.state.selectedTags;
selectedTags.push(tag);
this.setState({
selectedTags: selectedTags
});
return selectedTags;
}
Нет, у меня есть другая функция, которая обновляет состояние массива, содержащего выбранные элементы.Проблема в том, что я не могу найти способ передать массив в эту функцию:
private saveSettings(newTag: Tags): void {
this.setState({ savingSettings: true, tagActive: true });
let tags: Tags[] = this.state.items;
// Add the new tag to the tags array and update the state
tags.push(newTag);
this.setState({
items: tags,
activeTile: -1
});
var cacheManager = new CacheManager();
cacheManager.set(this.cacheKey, tags);
this.props.provider.saveSettingsData(tags).then(() => {
this.setState({
savingSettings: false
});
});
}
Чтобы сохранить массив, я пытаюсь использовать событие onclick, которое выглядит так:
onClick={this.saveSettings(this.state.selectedTags)}
В VS я получаю эту ошибку:
"Аргумент типа 'Tags []' не может быть назначен параметру типа 'Tags'. Типу 'Tags []' не хватает следующих свойств извведите 'Tags': title, id, defaultTag "
Что я могу сделать?
С уважением, Американо