MobX将对象添加到可观察数组

时间:2018-12-12 19:36:15

标签: javascript arrays mobx mobx-state-tree

MobX对象到可观察数组

我无法将一个对象推入一个可观察的数组中,并且无法对其进行迭代。

起点(所有数据均通过控制台的日志):

if (!self.selectedGlobalFilters) self.selectedGlobalFilters = observable([])

并将对象 filter.options01 接收为:

Proxy {Symbol(mobx administration): ObservableObjectAdministration$$1}
  [[Handler]]: Object
    [[Target]]: Object
      key: "status"
      value: "rejected"

...然后尝试推送

self.selectedGlobalFilters.push(filter.options01)

给我:

[Proxy]
  0: Proxy
    [[Handler]]: Object
      [[Target]]: Object
        key: "status"
        value: "rejected"

然后尝试将另一个对象 filter.options02 推送为:

Proxy {Symbol(mobx administration): ObservableObjectAdministration$$1}
  [[Handler]]: Object
    [[Target]]: Object
      key: "status"
      value: "done"


self.selectedGlobalFilters.push(filter.options02)

给我:

[Proxy]
  0: Proxy
    [[Handler]]: Object
      [[Target]]: Object
        key: "status"
        value: "done"

所以这里基本上有2个问题,一个是第二次推送优先于第一次推送,但更多,所以我想拥有这样的数据:

[{…}]
  0: 
    status: "rejected"
  1:
    status: "done"

TLDR; 我将如何实现这一目标? 将对象以可迭代的方式推入可观察的数组...

切片数组对输出没有不同的影响。

一如既往地感谢所有方向,所以在此先感谢您!

1 个答案:

答案 0 :(得分:0)

我相信这里的问题是,您仅观察一个变量,而不是映射整个数组!

@observable selectedGlobalFilters = [];

if (!this.selectedGlobalFilters.length) 
  this.selectedGlobalFilters.push(filter.options01)

..或

const gFilter = toJS(this.selectedGlobalFilters)
  this.selectedGlobalFilters = gFilter.push(filter.options01)

..如果症状持续:-)