我只是想从存储在本地存储中的数组中删除一个对象,然后在屏幕上刷新,但数组每次都按照上图显示混乱。
代码在其他地方保存和恢复正常,但不会以相同的方式编辑。
class Home extends Component {
constructor(props) {
super(props);
let notes = getLocalItem(keys.listOfItems);
if (!notes) {notes=[];}
this.state = {
title: '',
content: '',
notes: notes
}
}
// function to go to edit note page, but opening the relevant note to edit
editNoteClicked(clickedValue) {
setLocalItem(keys.noteToEdit, clickedValue);
this.props.history.push('/editnote');
}
deleteNoteClicked(clickedValue) {
let copyOfNotes = [this.state.notes]; // make a separate copy of the array
delete copyOfNotes[clickedValue]; // delete item in array
this.setState({ notes: copyOfNotes }, setLocalItem(keys.listOfItems, copyOfNotes)); //
//refresh page here
}
renderRows() {
let rows = [];
for (let i = 0; i < this.state.notes.length; i++) {
let currentNote = this.state.notes[i];
rows.push(
<div>{currentNote.title} - {currentNote.content}
<button className="btn" onClick={() => this.editNoteClicked(i)}>EDIT</button>
<button className="btn" onClick={() => this.deleteNoteClicked(i)}>DELETE</button>
</div>
);
}
return rows;
}
问题出在您的 deleteNoteClicked 函数中,请尝试以下代码,看看是否有效:-
deleteNoteClicked(clickedValue) {
let copyOfNotes = [...this.state.notes]; // make a separate copy of the array
copyOfNotes.splice(clickedValue, 1) // Remove item at position clickedValue
this.setState({ notes: copyOfNotes }, setLocalItem(keys.listOfItems, copyOfNotes));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句