Могу ли я сделать наблюдаемую переменную в магазине Mobx?

при инициализации магазина у меня есть переменная, в которой создается новый дочерний магазин. Компонент наблюдателя не выполняет повторную визуализацию при изменениях при повторной инициализации этого дочернего хранилища.

пример

class OrderStore {
   price: PriceStore; // not observable
   
   @action.bound
   async fetch(){
      const response = await fetchOrder();
      this.price = new PriceStore(response.price);
   }
  
   @action.bound
   registerRefreshOrder(){
      setInterval(()=>{
         this.fetch();
      }, 10000);
   }
}


class PriceStore{
   @observable amount:number;

   constructor(priceResponse:{amount:number}){
       this.amount = priceResponse.amount;
   }
}

Таким образом, пока переменная price не является наблюдаемой, компонент наблюдателя не обновлялся, а затем изменялся PriceStore.amount.

Правильно это или нет? Должен ли я инициализировать магазин один раз или я могу запустить его заново? Когда я делаю наблюдаемый экземпляр хранилища, он делает наблюдаемыми все поля или только ссылку на этот объект?


person Sergey Yu    schedule 15.12.2020    source источник


Ответы (1)


похоже, я нашел решение. Необходимо использовать @ observable.ref для наблюдаемых экземпляров магазина

person Sergey Yu    schedule 15.12.2020