我正在尝试使用decorate语法声明一个observable.map。
class UiStore {
loaders = observable.map({})
}
export default decorate(UiStore, {
loaders: observable
})
但是当我尝试使用loaders.keys()
时,它只输出函数定义,而不是返回一个值:
{next:ƒ,Symbol(Symbol.iterator):ƒ}
答案 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>