Javascript Mobx4-observable.map.keys().values()返回函数而不是数组
我试图使用修饰语法声明一个observable.mapJavascript 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 {
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映射方法工作原理的理解有关
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规范,将公开以下方法:”