如何从外部API存储types.array mobx状态树,总是返回代理而不是对象

时间:2019-05-31 09:42:20

标签: react-native mobx mobx-state-tree

im正在从外部获取数据,并希望以数组形式存储在mobx存储中。但是结果总是代理,而不是我想要的对象

这是来自api的结果:

(4) [Object, Object, Object, Object]
0:Object
id:1
name: "Foobar"
created_at: "2019-04-27 09:09:29"
updated_at:null
deleted_at:null
__proto__:Object
.........

这是我的商店:


const TypesModel = types.model({
  name: types.maybe(types.string),
  created_at: types.maybe(types.string)
});

export const TransactionTypeStore = types
  .model("TransactionTypeStore", {
    transaction_types: types.optional(types.array(TypesModel), [])
  })
  .actions(self => ({
    getTypes: flow(function*(token) {
      try {
        const res = yield typesApi
          .headers({ Authorization: `Bearer ${token}` })
          .get()
          .json();

        console.log("result", res);

        self.transaction_types = res;

        // res.map(data => {
        //   self.transaction_types.push(data);
        // });
      } catch (err) {
        console.log(err);
      }
    })
  }));

这是我在控制台上登录我的mobx存储

transaction_types:Proxy
[[Handler]]:Object
[[Target]]:Array(4)
0:ObjectNode
1:ObjectNode
2:ObjectNode
3:ObjectNode
$treenode:ObjectNode
length:4
toJSON:function toJSON()
Symbol(mobx administration):ObservableArrayAdministration
__proto__:Array(0)
[[IsRevoked]]:false
.........

有人知道如何处理这种问题吗?

1 个答案:

答案 0 :(得分:0)

您的res对象是什么样子,应该是{ name, created_at }对象的数组-仅此而已,不是吗?同样,transaction_types绝不会仅仅是数组-types.array是复杂的MST类型,它具有一些数组方法,但它不是数组。它是an observable array,您应该相应地对待它。

还可以查看Michel Weststrate自己的视频教程:Use observable objects, arrays, and maps to store state in MobX,以更好地理解这一概念(创建帐户,免费)。