В моем todolist есть задержка по времени, данные не загружаются быстро в localstorage

#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)) в ответе