Я пытаюсь обнаружить изменения в массиве объектов, используя прокси JavaScript.
Проблема: Каждый раз, когда происходит изменение в массиве, например удаление или вставка, я хочу получить этот удаленный или вставленный элемент.
Текущий код
target = [{ id: 1, a: 'a' }, { id: 2, a: 'b' }];
proxy = new Proxy(target, {
get: function (target, property: string, receiver) {
if (property === 'pop') {
console.log('deleted object', target[target.length - 1]);
}
console.log('get', property);
// property is index in this case
return target[property];
},
set: function (target, property, value, receiver) {
console.log('set', property, 'to', value);
target[property] = value;
// you have to return true to accept the changes
return true;
}
});
Текущие мысли: Я сделал небольшой обходной путь, чтобы получить удаленный элемент из массива, но он работает только для метода pop()
, поскольку он удаляет последний элемент из массива.Но мне нужен способ получить изменения, даже если они сделаны с использованием метода splice
или push
или pop
.
Спасибо.
[Обновить] Решение, которое я нашел:
https://github.com/ElliotNB/observable-slim Я использовал эту библиотеку дляобнаружить изменения в массиве, я могу обнаружить изменения вложенных свойств внутри массива тоже.Это именно то, что я искал.
Причина, по которой я использую эту библиотеку, заключается в том, что она использует прокси.