Как получить модель / состояние для прослушивания после внесения изменений в дерево состояний Mobx? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть две модели / магазины, каждая из которых ссылается на объект. Store2 заполняется после того, как Store1 заполняется и получает childId. Как бы я мог слушать Store2, когда Store1 заполняется?

store1

import {action} from 'mobx'
import axios from "axios";
import {types} from "mobx-state-tree";

const Store1 = types.model('Store1', {
    id: types.number,
    name: types.string,
    description: types.string,
    childId: types.number
}).actions(self => ({
    onChange(name, value) {
        self[name] = value;
    },
    getInfo(id) {
        //API call that gets uses id and returns data
        self.id = data.id
        self.name = data.name
        self.description = data.description
        self.childId = data.childId
    },
}));

const store1 = Store1.create({
    id: 0,
    name: '',
    description: '',
    childId: 0
});
export default store1;

Store2 (не может быть заполнен, пока Store1 не получит childId от вызова API)

import {action} from 'mobx'
import axios from "axios";
import {types} from "mobx-state-tree";

const Store2 = types.model('Store2', {
    id2: types.number,
    name2: types.string,
    description2: types.string
}).actions(self => ({
    onChange(name, value) {
        self[name] = value;
    },
    //should receive id from store1 childId
    getInfo(childId) {
        //api call that gets info and returns data
        self.id2= data.id
        self.name2 = data.name
        self.description2 = data.description
    },
}));

const store2 = Store2.create({
    id2: 0,
    name2: '',
    description2: ''
});
export default store2;

1 Ответ

1 голос
/ 08 мая 2019

Если Store2 зависит от Store1 для чего-либо, у вас есть ссылка на него в экземпляре store2. Затем вы можете просто добавить представление, наблюдающее свойство экземпляра store1, которое будет автоматически пересчитывать себя после обновления наблюдаемого свойства.

...