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

Javascript Mobx4-observable.map.keys().values()返回函数而不是数组,javascript,mobx,Javascript,Mobx,我试图使用修饰语法声明一个observable.map class UiStore { loaders = observable.map({}) } export default decorate(UiStore, { loaders: observable }) 但是当我尝试使用loaders.keys()时,它只输出函数定义,而不是返回值: {next:ƒ,Symbol(Symbol.iterator):ƒ} 您正在从可观察对象创建可观察对象 class UiStore {

我试图使用修饰语法声明一个observable.map

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

export default decorate(UiStore, {
   loaders: observable
})
但是当我尝试使用
loaders.keys()
时,它只输出函数定义,而不是返回值:

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


您正在从可观察对象创建可观察对象

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映射方法工作原理的理解有关

如何迭代一个interator

const{decoration,observable,autorun}=mobx;
乌斯托尔级{
loaders=newmap()
}
const decoratedIstore=装饰(UiStore{
装载机:可观察
});
const uiStore=新装饰的历史记录();
自动运行(()=>{
for(uiStore.loaders.keys()的常量键){
控制台日志(键);
}
});
uiStore.loaders.set('name','jeff')

问题是,根据mobx文档()
.keys()
方法应该返回observable.map中所有键的数组。它似乎随着Mobx4的改变而改变,现在我们应该使用类似于
数组的东西。from(map.keys())
-这与您的anwserNo基本相同,它没有说明这一点。它表示它们的行为符合ES6 Map规范:“根据ES6 Map规范,将公开以下方法:”