Скидки до 28% + 2-ая профессия бесплатно и подарки на 50 000₽

Как работать с библиотекой on-change

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
27 мая 2024

Библиотека on-change из npm предназначена для отслеживания изменений в объектах JavaScript. Она позволяет добавить обработчики событий на изменения свойств объекта.

Для начала установите библиотеку on-change с помощью npm:

npm install on-change

Затем можно использовать данную библиотеку в своем коде:

import onChange from 'on-change';

const obj = {
  foo: 'bar',
  nested: {
    prop: 'value'
  }
};

const watchedObj = onChange(obj, (path, value, previousValue) => {
  console.log(`Путь "${path}" изменился с ${previousValue} на ${value}`);
});

watchedObj.foo = 'new value';
// Вывод: Путь "foo" изменился с bar на new value

watchedObj.nested.prop = 'new value';
// Вывод: Путь "nested.prop" изменился с value на new value

В этом примере вызывается функция onChange(), в которую передается объект и функция-колбек. Функция onChange() возвращает новый объект, который по своей структуре не отличается от переданного объекта.

Теперь, при каждом изменении объекта watchedObj будет вызываться функция-колбек, которая была передана в onChange() вторым параметром.

В свою очередь функция-колбек принимает несколько параметров:

  1. path — это имя ключа (свойство), которое было изменено в объекте. Если ключ вложенный, то имя будет содержать точку-разделитель с полным набором ключей, как это обычно происходит при обращении к вложенному свойству. Например: nested.prop.
  2. value — это новое значение, которое было назначено в свойство при изменении объекта
  3. previousValue — это предыдущее значение, которое хранилось в этом свойстве до изменения объекта

В примере выше, при изменении свойств foo и nested.prop в объекте watchedObj, вызывается обработчик изменений (функция-колбек), который выводит информацию о том, какое значение было до изменения и какое значение стало после изменения.

16 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Тест-драйв

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

Верстка

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.

Базы данных

Фреймворки