mobx 在对象深处丢失属性

mobx losing properties deep in an object

提前为这个糟糕的问题道歉。我更希望该领域的专家知道我做错了什么白痴事情,如果您需要更多信息,请直接询问!

我有一个有点复杂的对象需要使用 mobx 存储。

export default class Field {
    @observable public key: string;
    @observable public fieldCoordinates: Coords;
    @obser... more and more properties.

坐标看起来像

export default class Coords {
    @observable public id: string;
    @observable public coordinates: Array<LatLng>;
}

和经纬度

export default class LatLng {
    @observable public latitude: number;
    @observable public longitude: number;
}

我店里有

@observable public fields: Array<Field> = new Array<Field>();

Save 方法中我使用

 store.save("fields", toJS(this.fields));

然而,当我尝试使用 coordinates 对象来布置我的地图时,出现错误

Error while updating property 'coordinates' of view managed by: AIRMapPolygon

我使用这种方法获取数据(在商店中)

@computed public get DataSource(): Array<LatLng> {
    return this.field.fieldCoordinates.coordinates.slice();
}

然而,当我检查 fields 数组时,它已被从 LatLng 数组中删除。 (点列表在一个数组中有 9 个东西,但是数据不见了(我打开了第一个元素,它只有 proto 而不是数据。)

我想我做错了什么,或者使用了错误的类型或一些简单的事情......你能引导我朝着正确的方向前进吗?

我意识到这类问题在这里不太容易处理...

但如果你是未来遇到类似问题的人,那么我通过从坐标数组和对象中删除 @observable 来 'fixed' 它。

很明显,这会停止这些对象的 mobx 状态管理,但这对我来说很好,现在它对我有用。

更多消息: 如果事实上一个新要求意味着我确实需要这些是可观察的。

我现在有了数组的这一行

public readonly coordinates = observable<LatLng>([]);

我已经解决了我之前的问题,我现在认为这个问题与使用一些 setState() 有关,我没有完成迁移到 mobx 的地方,这打破了我的页面和期望。

不要混用不同的状态管理思想!