Mobx Исходные данные с сервера - PullRequest
0 голосов
/ 19 марта 2020

Как я могу установить значение хранилища mobx со стороны сервера в качестве начального значения (из fetch / http)?

import { computed, observable } from 'mobx';
import { Instrument } from '../models/core/instrument';

class ObservableInstrumentStore {
  //should set init value from server instead of setting to empty array
  @observable instruments: Instrument[] = [];

  @computed get getInstruments(): Instrument[] {
    return this.instruments;
  }

  addInstruments(instruments: Instrument[]): void {
    this.instruments = instruments;
  }
}

export const observableInstrumentStore = new ObservableInstrumentStore();

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Мне удалось настроить хранилище mobx с инициализацией данных с сервера следующим образом:

class ObservableInstrumentStore {
  @observable instruments: Instrument[] = [];

  @computed get getInstruments(): Instrument[] {
    return this.instruments;
  }

  addInstruments(instruments: Instrument[]): void {
    this.instruments = instruments;
  }

  async initializeInstruments(): Promise<void> {
    const response = await fetchInstruments();
    if (isRight(response)) {
      this.instruments = response.right;
    }
  }
}

const observableInstrumentStore = new ObservableInstrumentStore();
observableInstrumentStore.initializeInstruments().then();
export default observableInstrumentStore;
0 голосов
/ 19 марта 2020

Как бы вы это сделали, если бы не использовали mobx и observables?

Есть несколько опций.

  1. Подождите, пока длина массива будет больше нуля чтобы что-то сделать с данными.

  2. Имейте flag, который сигнализирует, что загрузка данных завершена, и затем попытайтесь что-то сделать с данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...