0

我有课@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
    )
4

1 回答 1

0

如果反应负责发送单个页面的更新,我会在Page构造函数本身中设置该反应,或者在 Page 中有一个实用函数,这样你就不必让你的 pages 数组与你的同步反应处置器数组(但作为最佳实践,如果要删除页面,请处置反应)

于 2016-11-20T20:22:34.027 回答