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