@MarEeeeee

Реактивность на Vue? Как обновить компонент?

Получаю данные с сервера. Требуется перерисовывать компонент каждый раз, когда приходят новые данные, как реализовать? В чем ошибка? подскажите пожалуйста

methods:{
      newvalue(data, whichScreen){        
         if(whichScreen){ 
           console.log("попал");
           console.log(data);         
           this.firstWindow = Object.assign({}, this.firstWindow, data);
          
         }else{          
           this.secondWindow = Object.assign({}, this.secondWindow, data);          
         }
      }
  }
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 1
Требуется перерисовывать компонент каждый раз, когда приходят новые данные, как реализовать?

Значит уже что-то не так. Не должно такого требоваться. Компонент должен перерисовываться сам на основании данных, когда это действительно нужно.

this.firstWindow = Object.assign({}, this.firstWindow, data);

Это вы добавляете объект в data? Не надо так делать - вы теряете реактивность.
Положите этот объект в другой (на уровень ниже) и сделайте так:
methods:{
      newvalue(data, whichScreen){        
         if(whichScreen){ 
           console.log("попал");
           console.log(data);         
           Vue.set(this.windows, 'firstWindow', Object.assign({}, this.firstWindow, data));
          
         }else{          
           Vue.set(this.windows, 'secondWindow', Object.assign({}, this.secondWindow, data));          
         }
      }
  }


Сответственно у вас теперь будет this.windows.secondWindow вместо this.secondWindow
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы