#javascript #reactjs
#javascript #reactjs
Вопрос:
Я работаю над созданием списка задач, я получил обновление, т.Е. Добавление данных в localstorage, чтобы при обновлении вкладки данные извлекались из localstorage, проблема в том, что при добавлении второй задачи первая загружается в localstorage
functionToSetLocalStorage () {
console.log(this.state.items);
}
addItem(e) {
if (this._inputElement.value !== "") {
var newItem = {
text: this._inputElement.value,
key: Date.now()
}
console.log(this.state.items);
this.setState((prevState) =>{
return {
items: prevState.items.concat(newItem)
}
}, this.functionToSetLocalStorage);
console.log(this.state.items);
this._inputElement.value = "";
}
e.preventDefault();
localStorage.setItem('todoEntries',JSON.stringify(this.state.items));
}
Кто-нибудь может мне помочь, почему есть задержка?
Ответ №1:
setState
является ли асинхронная функция
попробуйте добавить localStorage.setItem('todoEntries',JSON.stringify(this.state.items));
в свою функцию setState, прежде чем возвращать новое состояние.
this.setState((prevState) =>{
localStorage.setItem('todoEntries',JSON.stringify(prevState.items.concat(newItem) ));
return {
items: prevState.items.concat(newItem)
}
}, this.functionToSetLocalStorage);
Комментарии:
1. @ManthanKumbhar вы удалили localStorage.setItem(‘todoEntries’,JSON.stringify(this.state.items)); в конце?
2. Yaa тоже это сделал
3. @ManthanKumbhar мой плохой, я исправил JSON.stringify(prevState.items.concat(newItem)) в ответе