Как получить удаленный или вставленный элемент из массива прокси? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь обнаружить изменения в массиве объектов, используя прокси 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 Я использовал эту библиотеку дляобнаружить изменения в массиве, я могу обнаружить изменения вложенных свойств внутри массива тоже.Это именно то, что я искал.

Причина, по которой я использую эту библиотеку, заключается в том, что она использует прокси.

...