Mobx4 - observable.map .keys()。value()返回函数而不是数组

时间:2018-04-08 17:15:15

标签: javascript mobx

我正在尝试使用decorate语法声明一个observable.map。

class UiStore {
   loaders = observable.map({})
}

export default decorate(UiStore, {
   loaders: observable
})

但是当我尝试使用loaders.keys()时,它只输出函数定义,而不是返回一个值:

  

{next:ƒ,Symbol(Symbol.iterator):ƒ}

1 个答案:

答案 0 :(得分:0)

您正在从一个可观察的角度创建一个observable。

class UiStore {
   loaders = observable.map({}) // Creates an observable map
}

export default decorate(UiStore, {
   loaders: observable // creates an observable from the observable map
})

这样就足够了(但这里不是问题)。你的主要问题是,你期待错误的事情。大多数map方法返回迭代器而不是您期望的数组。所以你的问题与mobx无关,但你了解javascript的Map方法是如何工作的。

HowTo迭代一个交互器

const { decorate, observable, autorun } = mobx;

class UiStore {
   loaders = new Map()
}

const decoratedUiStore = decorate(UiStore, {
   loaders: observable
});

const uiStore = new decoratedUiStore();

autorun(() => {
  for (const key of uiStore.loaders.keys()) {
    console.log(key);
  }
});


uiStore.loaders.set('name', 'jeff');
<script src="https://cdnjs.cloudflare.com/ajax/libs/mobx/4.1.1/mobx.umd.min.js"></script>