Javascript mobx extendObservable不';I don’我没有按预期工作
我试图使用Javascript mobx extendObservable不';I don’我没有按预期工作,javascript,reactjs,mobx,mobx-react,Javascript,Reactjs,Mobx,Mobx React,我试图使用extendObservable在可观察状态上添加更多属性,但它不起作用。下面是我的代码 var store = mobx.observable({ property: {} }); mobx.autorun(function () { console.log("render:"+store.property.a); }); store.property = {a:1}; extendObservable(store.property, {a:2}); store.pro
extendObservable
在可观察状态上添加更多属性,但它不起作用。下面是我的代码
var store = mobx.observable({
property: {}
});
mobx.autorun(function () {
console.log("render:"+store.property.a);
});
store.property = {a:1};
extendObservable(store.property, {a:2});
store.property.a=3;
输出为:
render:undefined
render:1
我用属性
对象初始化了一个商店。我想在属性下添加a
作为可观察状态,但在使用extendObservable
方法后,我没有执行autorun
。我期望值3被打印出来,但它没有打印出来。我的代码怎么了?这是使用可扩展服务方法的正确方法吗?请仔细阅读本页。使用extendObservable
添加的动态属性的用法有一些规律。您正在“观察”的对象(双关语)记录在该页面的不正确:使用尚未存在的可观察对象属性部分中。正确的方法也将在下一节中提到
基本上,跟踪函数必须使用observable的get
方法,以确保在状态发生变化时再次调用它。固定代码是-
mobx.autorun(function () {
console.log("render:"+store.property.get("a"));
});
extendObservable(store.property, {a:2});
store.property.set("a", 3);
因此,您需要将get
/set
与extendedobservable
扩展对象一起使用。请仔细阅读本页。使用extendObservable
添加的动态属性的用法有一些规律。您正在“观察”的对象(双关语)记录在该页面的不正确:使用尚未存在的可观察对象属性部分中。正确的方法也将在下一节中提到
基本上,跟踪函数必须使用observable的get
方法,以确保在状态发生变化时再次调用它。固定代码是-
mobx.autorun(function () {
console.log("render:"+store.property.get("a"));
});
extendObservable(store.property, {a:2});
store.property.set("a", 3);
因此,您需要将get
/set
与extendedobservable
扩展对象一起使用。您可以在文档的一节中了解这不起作用的原因:
MobX可观察对象不检测属性指定或对属性指定作出反应
这在以前是不可观测的。所以MobX是可观测的物体
充当具有预定义键的记录。你可以用
extendObservable(目标、道具)
引入新的可观测
对象的属性。但是,对象迭代器,如..的。。在
或
Object.keys()
不会自动对此做出反应。如果你需要
动态设置关键帧的对象,例如按id存储用户,创建
可观测地图
因此,不必在可观察对象上使用extendObservable
,只需向可观察贴图添加一个新键即可
示例
var store = mobx.observable({
property: mobx.observable.map({})
});
mobx.autorun(function () {
console.log('render:' + store.property.get('a'));
});
store.property.set('a', 2);
setTimeout(function () {
store.property.set('a', 3);
}, 2000);
您可以在文档的一节中阅读为什么这不起作用:
MobX可观察对象不检测属性指定或对属性指定作出反应
这在以前是不可观测的。所以MobX是可观测的物体
充当具有预定义键的记录。你可以用
extendObservable(目标、道具)
引入新的可观测
对象的属性。但是,对象迭代器,如..的。。在
或
Object.keys()
不会自动对此做出反应。如果你需要
动态设置关键帧的对象,例如按id存储用户,创建
可观测地图
因此,不必在可观察对象上使用extendObservable
,只需向可观察贴图添加一个新键即可
示例
var store = mobx.observable({
property: mobx.observable.map({})
});
mobx.autorun(function () {
console.log('render:' + store.property.get('a'));
});
store.property.set('a', 2);
setTimeout(function () {
store.property.set('a', 3);
}, 2000);