Immutable.js ausführlich erklärt
Dieses Mal werde ich Ihnen eine detaillierte Erklärung von Immutable.js geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung von Immutable.js? Hier sind praktische Fälle.
Anwendung von Immutable.js im React + Router + Redux-Projekt
Erste Einführung von Immutable:
Die Entstehung von Immutable.js entstand aus der Idee der funktionalen Programmierung. Das heißt, alle Daten sollten kopiert und nicht direkt geändert werden. Eine entsprechende Einführung finden Sie auf der offiziellen Website:
https://facebook.github.io/immutable-js/
Wenn Sie also etwas Programmiererfahrung haben, können Sie es verstehen Das Unveränderliche ist eine weitere Bibliothek von Datenstrukturen. Es ist, als würde man von ArrayList zu LinkedList wechseln. Unter Immutable.js wird es von JavaScript-Syntaxs eigenem Array (das ist []) und Objekt ({ }) in Immutable.List und Immutable.Map geändert.
Aber schließlich erben sowohl ArrayList als auch LinkedList von List, und die Schnittstellen sind relativ konsistent, sodass es kein großes Problem darstellt, sie zu ersetzen. Wenn Sie jedoch Immutable verwenden möchten, um JavaScript-nativ zu ersetzen, ist dies kein großes Problem wird etwas komplizierter sein.
var map1 = Immutable.Map({a:1, b:2, c:3});var map2 = map1.set('b', 50); map1.get('b'); // 2/* ----------------悠长悠长的分割线---------------- */var list1 = Immutable.List.of(1, 2);var list2 = list1.push(3, 4, 5);var list3 = list2.unshift(0);var list4 = list1.concat(list2, list3);
Es ist kompliziert, aber es geht nur darum, mehr Aufmerksamkeit zu schenken.
Dann lasst uns über Redux und Router sprechen
Redux verfügt über eine CombineReducers-Methode, die Reduzierer aufteilen kann. Zum Beispiel:
combineReducers({ user: userReducer, dashboard: dashboardReducer, })
Dann kommt die Frage:
Wenn Sie den Status abrufen, verwenden Sie dann state.get('user') oder state.user?
Verwenden Sie offensichtlich state.user. Weil combineReducers Immutable nicht kennt.
(Sagen Sie mir nicht, ich soll es mischen. Eine einschichtige Struktur kann so sein. Was ist mit mehreren Schichten? Wie wäre es mit der Zusammenarbeit mit mehreren Personen? Wenn Sie sich an einer Stelle täuschen, werden überall Fehler gemeldet)
Wenn Sie also ein React + Router + Redux verwenden möchten Wenn Sie Immutable in Ihrem Projekt verwenden, können Sie es entweder lokal verwenden (wenn es lokal verwendet wird, ist es im Grunde ein großer Albtraum) oder Sie können es verwenden als Komplettset.
Dann schauen Sie hier (dieser Typ hat CombineReducers umgeschrieben):
https://github.com/gajus/redux-immutable
Verwenden Sie ihre CombineReducers, Sie können sicher sein. Verwenden Sie state.get('user ').
Während sie CombineReducers lösten, lösten sie auch das Problem von React-Router-Redux (stellen Sie sich vor, dass der Router ein Routing-Modul unter dem Status ist, aber nicht weiß, wie man Immutable verwendet):
https ://github.com/gajus/redux-immutable#using-with-react-router-redux
Nachdem ich so viel gesagt habe, wie man es benutzt
Zuallererst ist Ihr Projekt reagieren + Standardkonfiguration des Routers + Redux.
Dann müssen Sie Immutable vorstellen.
Dann sollten Sie Folgendes tun:
redux-immutable einführen
Konfigurieren Sie den Verlauf gemäß der README.md von redux-immutable (Strg+C, Strg+V)
Verwenden Sie beim Zusammenführen aller Reduzierer die CombineReducers von redux-immutable
Verwenden Sie Immutable.js's Immutable.List und Immutable.Map für alle Daten, die in den Zustand eintreten und ihn verlassen (das ist das eigentliche Thema)
Gibt es sonst noch etwas, worauf Sie achten sollten?
Probleme mit Komponenten:
Die Idee von Redux besteht darin, Komponenten in Smart und Dumb zu unterteilen. Die Smart-Komponente ist für den Empfang von Daten verantwortlich, und die Dumb-Komponente ist für die Verwendung von Daten verantwortlich und konzentriert sich nur auf Requisiten. Deckt Immutable also „Smart and Dumb“ ab?
Meine persönliche Meinung ist folgende:
Dumme Komponenten müssen grundsätzlich abstrahiert und von mehreren Projekten gemeinsam genutzt werden. Es wäre besser, wenn diese Komponenten Immutable nicht unterstützen würden, da sie sonst an Immutable gebunden wären.
Die Daten in Dumb stammen also nativ aus JavaScript. Bedeutet das nicht, dass wir die Vorteile von Immutable nicht nutzen können?
Die Daten wurden in die Komponente kopiert, es ist also nichts Falsches daran, ein wenig auf Kompatibilität zu verzichten, oder?
Die Schlussfolgerung hinter dieser Idee ist:
Container im Redux-Konzept führt auch eine gegenseitige Konvertierung zwischen unveränderlich und nativ durch, wenn eine Verbindung zwischen Status und Requisiten sowie zwischen Requisiten und Versand hergestellt wird. (Adaptermuster)
Beim Testen:
Sie sollten die aktuellen Daten in console.log speichern. Das Eingeben der Immutable.List sieht sehr ermüdend aus. Es wird empfohlen, console.log (imtb) zu verwenden .toJS())
Aber was ist mit dem Debuggen?
Off-Topic
Es wäre schön, wenn diese Funktionen in JavaScript selbst integriert wären.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Verwandte Lektüre:
Wie man mit js in der Android-Entwicklung interagiert
Ein Rich-Text-Editor im Graphitdokumentstil, erstellt mit Vue.js 2.0+
Pfad zu node.js Detaillierte Erklärung der Module
Das obige ist der detaillierte Inhalt vonImmutable.js ausführlich erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das Windows-Betriebssystem ist eines der beliebtesten Betriebssysteme der Welt und seine neue Version Win11 hat viel Aufmerksamkeit erregt. Im Win11-System ist die Erlangung von Administratorrechten ein wichtiger Vorgang. Mit Administratorrechten können Benutzer weitere Vorgänge und Einstellungen auf dem System durchführen. In diesem Artikel wird ausführlich beschrieben, wie Sie Administratorrechte im Win11-System erhalten und wie Sie Berechtigungen effektiv verwalten. Im Win11-System werden Administratorrechte in zwei Typen unterteilt: lokaler Administrator und Domänenadministrator. Ein lokaler Administrator verfügt über vollständige Administratorrechte für den lokalen Computer

Detaillierte Erläuterung der Divisionsoperation in OracleSQL In OracleSQL ist die Divisionsoperation eine häufige und wichtige mathematische Operation, die zur Berechnung des Ergebnisses der Division zweier Zahlen verwendet wird. Division wird häufig in Datenbankabfragen verwendet. Daher ist das Verständnis der Divisionsoperation und ihrer Verwendung in OracleSQL eine der wesentlichen Fähigkeiten für Datenbankentwickler. In diesem Artikel werden die relevanten Kenntnisse über Divisionsoperationen in OracleSQL ausführlich erörtert und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. 1. Divisionsoperation in OracleSQL

Der Modulo-Operator (%) in PHP wird verwendet, um den Rest der Division zweier Zahlen zu ermitteln. In diesem Artikel werden wir die Rolle und Verwendung des Modulo-Operators im Detail besprechen und spezifische Codebeispiele bereitstellen, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle des Modulo-Operators Wenn wir in der Mathematik eine ganze Zahl durch eine andere ganze Zahl dividieren, erhalten wir einen Quotienten und einen Rest. Wenn wir beispielsweise 10 durch 3 dividieren, ist der Quotient 3 und der Rest ist 1. Um diesen Rest zu ermitteln, wird der Modulo-Operator verwendet. 2. Verwendung des Modulo-Operators In PHP verwenden Sie das %-Symbol, um den Modul darzustellen

Detaillierte Erläuterung der Funktion system() des Linux-Systems Der Systemaufruf ist ein sehr wichtiger Teil des Linux-Betriebssystems. Er bietet eine Möglichkeit, mit dem Systemkernel zu interagieren. Unter diesen ist die Funktion system() eine der am häufigsten verwendeten Systemaufruffunktionen. In diesem Artikel wird die Verwendung der Funktion system() ausführlich vorgestellt und entsprechende Codebeispiele bereitgestellt. Grundlegende Konzepte von Systemaufrufen Systemaufrufe sind eine Möglichkeit für Benutzerprogramme, mit dem Betriebssystemkernel zu interagieren. Benutzerprogramme fordern das Betriebssystem an, indem sie Systemaufruffunktionen aufrufen

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Detaillierte Erläuterung des Linux-Befehls „curl“ Zusammenfassung: Curl ist ein leistungsstarkes Befehlszeilentool für die Datenkommunikation mit dem Server. In diesem Artikel wird die grundlegende Verwendung des Curl-Befehls vorgestellt und tatsächliche Codebeispiele bereitgestellt, um den Lesern zu helfen, den Befehl besser zu verstehen und anzuwenden. 1. Was ist Locken? Curl ist ein Befehlszeilentool zum Senden und Empfangen verschiedener Netzwerkanfragen. Es unterstützt mehrere Protokolle wie HTTP, FTP, TELNET usw. und bietet umfangreiche Funktionen wie Datei-Upload, Datei-Download, Datenübertragung und Proxy

Eine detaillierte Erklärung von Promise.resolve() erfordert spezifische Codebeispiele. Promise ist ein Mechanismus in JavaScript zur Verarbeitung asynchroner Vorgänge. In der tatsächlichen Entwicklung ist es häufig erforderlich, einige asynchrone Aufgaben zu verarbeiten, die nacheinander ausgeführt werden müssen, und die Methode Promise.resolve () wird verwendet, um ein erfülltes Promise-Objekt zurückzugeben. Promise.resolve() ist eine statische Methode der Promise-Klasse, die a akzeptiert

Als weit verbreitete Programmiersprache im Bereich der Softwareentwicklung ist die Sprache C für viele Programmieranfänger die erste Wahl. Das Erlernen der C-Sprache kann uns nicht nur dabei helfen, grundlegende Programmierkenntnisse zu erwerben, sondern auch unsere Problemlösungs- und Denkfähigkeiten verbessern. In diesem Artikel wird eine Roadmap zum Erlernen der C-Sprache im Detail vorgestellt, um Anfängern dabei zu helfen, ihren Lernprozess besser zu planen. 1. Grundlegende Grammatik lernen Bevor wir mit dem Erlernen der C-Sprache beginnen, müssen wir zunächst die grundlegenden Grammatikregeln der C-Sprache verstehen. Dazu gehören Variablen und Datentypen, Operatoren, Steueranweisungen (z. B. if-Anweisungen,
