对单个

时间:2016-11-12 22:50:32

标签: javascript mobx

我有@observable的课(所有的例子都是打字稿/伪代码)

class Page {
   id: number = 0;

   @observable
   isVisible: boolean = false;
}

let array = [new Page(), new Page(), new Page()];

还有一些功能:

changeVisibility(obj)
{
    //ajax call like .post("/api/changeVisibility/", {id:obj.id, isVisible:obj.isVisible})
}

我想对任何对象的isVisible更改做出反应。

我可以枚举数组并制作类似:

array.forEach(el => {
    reaction(
        () => el.isVisible,
        isVis => changeVisibility(el);
    });
});

但我可以用一个功能吗? 一种"数组观察者对元素属性的变化做出反应"。

这样的事情:

 reaction(array, //source
       (el) => el.isVisible, //observable to react
       (el) => changeVisibility(el) //callback with object
    )

1 个答案:

答案 0 :(得分:0)

如果反应是负责发送单个页面的更新,我会在Page构造函数本身设置该反应,或者在Page中有一个实用程序功能,这样你就不会必须让你的页面数组与你的反应处理器数组保持同步(但是最佳做法是,如果要删除页面,请处理反应)