javascript - immutable.js .set 上的回调

标签 javascript immutable.js

我是 immutable.js 的新手,我想知道是否可以设置一个不可变对象(immutable对象)来在特定属性上调用 .set 时运行回调函数。

例如:

const { Map } = require('immutable');
const map = Map();
map.onChange('value', () => {
  /*
    Do some things when map.set('value', 'some new value') is called.
  */
});

最佳答案

我不知道是否有更简单的方法来做到这一点,但您可以使用代理来实现您想要的。

var handler = {
  get: function(target, property, receiver) {
    if (property === 'set') {
      const origMethod = target[property];
      return function(...args) {
        // Add your callback in here
        console.log(`set was called with ${args}`)
        return origMethod.apply(this, args);
      };
    }
    return target[property]
  }
};

var map1 = new Proxy (Immutable.Map({'b': 123}), handler)
var map2 = map1.set('b', 50);
console.log(map1.get('b')); // 123
console.log(map2.get('b')); // 50

http://jsfiddle.net/3bgub8r2/3/

关于javascript - immutable.js .set 上的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48133251/

相关文章:

javascript - Vue.js 和 Immutable.js

javascript - 将 Immutable.js map 列表转换为列表列表,然后将其用作谷歌图表的数据

javascript - 当不在主路径中时,显示后退按钮以像浏览器后退按钮一样返回

javascript - 将对象数组映射到按对象键 js 不可变分组的映射中

javascript - 您可以根据屏幕大小选择包含和脚本吗?

javascript - Textmate - 用于转义引号的键盘快捷键

javascript - 如何使用 ImmutableJS 更新 List 中的元素?

javascript - 映射关联数组的值

javascript - RXJS 行为主题在首次加载时输出重复

javascript - JS : Touch equivalent for mouseenter