Mobx4 - observable.map .keys() .values() return 函数而不是数组
Mobx4 - observable.map .keys() .values() return function instead of array
我正在尝试使用装饰语法声明一个 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 方法 return 是迭代器而不是您期望的数组。所以你的问题与 mobx 无关,但与你对 javascript 的 Map 方法如何工作的理解有关。
如何迭代一个交互器
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>
我正在尝试使用装饰语法声明一个 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 方法 return 是迭代器而不是您期望的数组。所以你的问题与 mobx 无关,但与你对 javascript 的 Map 方法如何工作的理解有关。
如何迭代一个交互器
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>