Требуется перерисовывать компонент каждый раз, когда приходят новые данные, как реализовать?
Значит уже что-то не так. Не должно такого требоваться. Компонент должен перерисовываться сам на основании данных, когда это действительно нужно.
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