Observable Maps
observable(asMap(values?, modifier?)) (和map(values?, modifier?))创建一个具有动态键值的可观察的Map。如果你不只是想要对特定的条目更改做出响应,而且还包含添加和删除条目时可观察的maps是非常有用的。当然了,你也可以给对象或数组初始值。和 ES6 的maps不同,其只接受字符串作为键。该修饰符可以作为MobX修饰符的一种,就像asReferce。
以下的方式是根据ES6 Map规范提供的:
has(key)返回这个map是否含有提供的key。要注意key本身实际上是可被观察的。set(key, value)设置提供的key的值。即使提供的key不存在,其在map中会被添加。delete(key)在map中删除提供的key值get(key)返回提供的key的值(可能为undefined),可以通过has确认你是否可以调用get。keys()返回map中的所有key,插入的顺序也是被保留的。entries()返回一个包含对于map中每个键/值对的映射数组[key, value](有插入顺序)的数组。forEach(callback: (value, key, map) => void, thisArg?)。对map中的任何一个键/值对进行调用回调。clear()移除map中所有条目。size返回map中的条目数量。
下面的方法不是 ES6 支持的,但是在MobX中是非常有用的:
toJS()返回该map的一个浅拷贝简单对象(对于深拷贝请使用`mobx.toJS(map))。intercept(interceptor)注册一个在应用于map中任何改变之前会被触发的拦截器。请参阅observe & intercept。observe(listener, fireImmdidately)注册一个当map中任何改变时被触发的监听者,类似Object.observe的发射事件。详情请参阅observe & intercept。merge(object | map)复制提供的对象中的所有条目到这个map中。replace(values)用提供的值替换map中全部内容, 其可简写为.clear().merge(values)。
observable.shallowMap(values)
任何分配给一个可观察的 map 的值都将默认通过 observable 使其变成可观察的。
创建一个 浅map 去取消默认行为并按照原样存储。有关此机制的详细信息可参阅 modifiers。
名称参数
observable.map 和 observable.shallowMap 都有第二个参数, 这个参数被当做如 spy 或者 MobX 开发工具的调试名称。