Mobx在javascript中实现了可观察的模式。通过使用mobx和mobx-react,人们可以在反应中引用mobx observables并为它们分配autorun,reaction和comptued例程。每次observable改变其引用关系时,自动运行,反应和计算例程都会被触发。
当你开发一个内容丰富的应用程序时,这非常有用,比如编辑。
虽然js信号的工作方式不同,但信号可以注册回调及其优先级。当组件发生变化时,程序员可以选择调度信号以触发所有相关的回调(就像事件一样)
哪种模式更好,它们能否顺利合作?
我正在研究一种强烈使用信号的编辑器。我也更喜欢使用可观察的模式来管理编辑器的状态。我的个人感受,当观察者成长时(就像200个全局变量),它变得难以维持。
我很感激你的想法。成功使用这些技术的开发人员受到欢迎。
答案 0 :(得分:0)
js-signals只是一个事件发射器库,而mobx只是一个状态/观察者库。
您可以简单地触发和处理事件。只要处理程序在mobx.action中包含mobx State的更改。正确处理状态更改并正确更新反应组件/正确触发观察器事件:
class Store {
@mobx.observable name = "test"
}
var store = new Store();
//custom object that dispatch a `started` signal
var myObject = {
started : new signals.Signal()
};
function onStarted(name){
mobx.runInAction(() => {
store.name = name;
});
}
myObject.started.add(onStarted); //add listener
mobx.observe(store,"name",change=> {
myObject.started.dispatch(change.name+'x'); //woops now we have an infinite loop!
});
myObject.started.dispatch('foo'); //dispatch signal passing custom parameters
// myObject.started.remove(onStarted); //remove a single listener