Beheben Sie die Fallstricke beim Speichern von Booleschen Werten im lokalen Speicher

Beheben Sie die Fallstricke beim Speichern von Booleschen Werten im lokalen Speicher

LocalStorage speichert Boolesche Werte

Als ich heute LocalStorage zum Speichern boolescher Daten verwendet habe, stellte ich fest, dass es ein Problem mit der Anzeige der Daten auf der Seite gab.

Später stellte ich fest, dass die im lokalen Speicher gespeicherten Booleschen Daten in Zeichenfolgen konvertiert wurden, was dieses Problem verursachte.

Daher werden „true“=true, „false“==false und „true“==false beide als „false“ angezeigt.

Die Fallstricke bei nicht konsequenter Nutzung von LocalStorage

Nach dem Start der neuen Version stellten wir fest, dass eine sehr kleine Anzahl „alter“ Benutzer die Homepage unserer Website nicht im WeChat-Browser öffnen konnte. Nach einem Online-Dateiproxy

Nachdem ich es geändert hatte, habe ich endlich das Problem gefunden.

Problem-Codeausschnitt:

wenn (localstorage.getItem("Dinge")) {
    var Dinge = localstorage.getItem("Dinge");
    (Dinge) verwenden;
    // Löschen Sie den Cache, nachdem Sie ihn einmal verwendet haben. localstorage.removeItem('things');
}anders{
    verwenden (neue Daten);
}

Dieser Code mag auf den ersten Blick in Ordnung erscheinen, birgt jedoch versteckte Gefahren. In der alten Version lautet der Inhalt der im lokalen Speicher gespeicherten Dinge wie folgt:

{
    Name: „px“,
    Alter:'25'
}

In der neuen Version wurde der Wert dieses Caches jedoch aufgrund von Nachfrageproblemen in die folgende Struktur geändert:

{
    Benutzername: „px“,
    mein Alter: '25'
}

Dies führt zu einem Fehler bei der Verwendung der Use-Funktion zur Verarbeitung von Dingen, was dazu führt, dass das nachfolgende RemoveItem nie ausgeführt wird, sodass die zwischengespeicherten Daten im Code nie gelöscht werden und die Use-Funktion immer die alten Daten zum Rendern verwendet, was zu einem Fehler führt und die neuen Daten nie verwendet werden können.

Es gibt zwei Punkte, die verbessert werden müssen

* Dem Cache eine Versionsnummer hinzufügen * Den Cache sofort nach dem Lesen des Caches mit einer Variablen leeren

Der optimierte Code lautet wie folgt:

//Ermitteln Sie zunächst die Cache-Versionsnummer if (localstorage.getItem ("version") == curVersion) {
    wenn (localstorage.getItem("Dinge")) {
        var Dinge = localstorage.getItem("Dinge");
        //Sofort löschen localstorage.removeItem('things');
        (Dinge) verwenden;
    }anders{
        verwenden (neue Daten);
    }
}anders{
    localstorage.removeItem('Dinge');
    verwenden (neue Daten);
}

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur lokalen Speichernutzung
  • JavaScript verwendet localStorage zum Speichern von Daten
  • So verwenden Sie localStorage zum Speichern von Daten in Vue

<<:  So installieren und verwenden Sie Cockpit unter CentOS 8/RHEL 8

>>:  Einführung in die Eigenschaften von B-Tree

Artikel empfehlen

Dateiupload über HTML5 auf Mobilgeräten

Meistens werden Plug-Ins zum Hochladen von Dateie...

Vue implementiert einen einfachen Laufschrifteffekt

In diesem Artikel wird der spezifische Code von V...

Zusammenfassung gängiger Docker-Befehle

Docker-Installation 1. Anforderungen: Linux-Kerne...

MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) Fallerklärung

Die MySQL-Fremdschlüsseleinschränkung (FOREIGN KE...

Vite+Electron zum schnellen Erstellen von VUE3-Desktopanwendungen

Inhaltsverzeichnis 1. Einleitung 2. Erstellen Sie...

IIS7~IIS8.5 Löschen oder Ändern des Serverprotokollheaders Server

Anforderungen: Entfernen Sie HTTP-Antwortheader i...

Beispielcode zur Implementierung von Follow Ads mit JavaScript

Floating Ads sind eine sehr verbreitete Form der ...

Detaillierte Erklärung des TS-Objekt-Spread-Operators und des Rest-Operators

Inhaltsverzeichnis Überblick Objektrestattribut E...

Detaillierte Erklärung zum Problem der CSS-Klassennamen

Die folgenden CSS-Klassennamen, die mit einer Zah...