Рубрики
Без рубрики

Реактивное печенье с RXJS

Значения хранения в реактивных куки. Tagged с JavaScript, наблюдается, WebDev.

Нам необходимо надежно сохранить данные на устройстве клиента и, для этого, у нас есть файлы cookie. Пакет NPM JS-Cookie Предоставляет нам простым интерфейсом для хранения и извлечения файлов cookie. Давайте построим обертку для этого интерфейса, чтобы сделать наше печенье реагировать.

Реактивное cookie будет создано с ключом.

import { of, Subject } from 'rxjs';

class ReactiveCookie {

    constructor(key) {
        this.key = key;
    }

}

Давайте добавим GetTers и Getters для стоимости.

constructor() {
    ...
    this.value = new Subject();
}

getValue() {
    return this.value;
}

setValue(value) {
    this.value.next(value);
}

Здорово! Мы хотим, чтобы сохраненное cookie нужно обновлять каждый раз, когда мы устанавливаем значение, чтобы он всегда в синхронизации. Мы подписываемся на ценность Субъект и установите файл cookie на каждом значении.

constructor() {
    ...
    this.synchronize();
}

synchronize() {
    this.getValue().subscribe((value) => { Cookies.set(this.key, value); });
}

Хорошо, как насчет того, когда уже есть сохраненное значение. Мы хотим, чтобы это сохраненное значение было установлено как начальное значение, поэтому мы добавим это также для конструктора.

constructor() {
    this.retrieveStoredValue();
}

getStoredValue() {
    return of(Cookies.get(this.key));
}

retrieveStoredValue() {
    this.getStoredValue().subscribe((value) => { this.value.next(value) });
}

Ву! Теперь, когда мы создаем файл cookie с ключом, который уже имеет сохраненное значение, это значение будет автоматически загружено в Reactivecookie ценность Отказ Кроме того, установка нового значения будет немедленно обновлять значение сохраненного cookie. Наконец, давайте добавим Очистить () и Удалить () Методы для завершения нашей функциональности.

clear() {
    this.setValue(null);
}

remove() {
    Cookies.delete(this.key);
    this.value.complete();
}

Теперь выходи и храните некоторые ценности!

Оригинал: “https://dev.to/lysofdev/reactive-cookies-with-rxjs-1g9m”