@zkrvndm
Боты, парсеры, расширения

Как среагировать на факт изменения объекта?

Сейчас я как делаю, пишу специальную функцию редактор, через который и работаю везде с целевыми объектами. Грубо говоря, если мне надо что-то изменить в объекте, я это делаю не напрямую, а вызываю функцию редактор. Однако, я тут подумал, а может быть существуют какие-то иные способы реагировать на изменение объекта?

В идеале бы хотелось тупо повесить некий обработчик и уже в дальнейшем работать с объектом напрямую.

P. S. Смутное ощущение, что я этот вопрос уже задавал, не пинайте меня сильно если что)
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Вы можете использовать систему реактивности из фреймворка Vue. Вам не нужен весь фреймворк. Достаточно только @vue/reactivity (работает на Proxy)

Пример:
import { computed, effect, reactive } from "@vue/reactivity";

const obj = reactive({ foo: 1 }); // Реактивная переменная
const doubleFoo = computed(() => obj.foo * 2); // Вычисляемое свойство (Реактивная переменная которая автоматически пересчитывается когда изменяется какая-либо из использованных внутри реактивных переменных)
effect(() => console.log("doubleFoo value changed to:" + doubleFoo.value)); // Функция, запускается когда изменяется какая-либо из использованных внутри реактивных переменных)

// Каждую секунду изменяет значение obj.foo
// После чего автоматически пересчитывается значение doubleFoo 
// После изменения doubleFoo вызывается функция переданная в effect и выводится сообщение в лог
setInterval(() => obj.foo++, 1000)


https://codesandbox.io/embed/ecstatic-wind-68ez4?f...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы