Я новичок в immutable.js, и мне было интересно, могу ли я создать неизменяемый объект для запуска функции обратного вызова, когда .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