我有一个函数可以将元素保存在onclick数组中。我的意思是,当我单击一个元素时,该元素将发送到将其保存在数组中的函数:
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”中的以下属性:title,id,defaultTag”
我该怎么办?
问候 美国
答案 0 :(得分:0)
private saveSettings(newTag: Tags): void {
this.setState((prevState )=>({
savingSettings: true,
tagActive: true,
items: [...prevState.items,newTag],
activeTile: -1
}));
var cacheManager = new CacheManager();
cacheManager.set(this.cacheKey, tags);
this.props.provider.saveSettingsData(tags).then(() => {
this.setState({
savingSettings: false
});
});
}
您可以通过ES6函数调用单击
onClick={()=>{this.saveSettings(this.state.selectedTags)}