Обратный звонок на immutable.js .set

1

Я новичок в 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.
  */
});
Теги:
immutable.js

1 ответ

0
Лучший ответ

Я не знаю, есть ли более простой способ сделать это, но вы можете добиться того, что хотите использовать прокси.

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/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню