Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Dies ist ein von KI übersetzter Beitrag.

뚠뚠멍의 생각들

React - "kakao is not defined" - Wie kann man das Problem lösen?

  • Schreibsprache: Koreanisch
  • Referenzland: Alle Länder country-flag

Sprache auswählen

  • Deutsch
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

Von durumis AI zusammengefasster Text

  • Das Problem, dass die Karte nicht gerendert wird, wenn die Kakao Map API in React 18 mit der create-react-app-Umgebung integriert wird, liegt daran, dass React-Komponenten nicht direkt auf globale Objekte zugreifen.
  • React vermeidet den direkten Zugriff auf globale Objekte, um Kapselung, Leistung und Zustandsverwaltung zu gewährleisten. Es werden stattdessen zentrale Zustandsverwaltungsbibliotheken wie Redux verwendet, um den Datenfluss zu steuern.
  • Im Gegensatz zu Vue bietet React mehr Flexibilität in Bezug auf Ordnerstruktur, Hooks usw., kann aber für Anfänger verwirrend sein. Es ist empfehlenswert, sich mit Toy-Projekten vertraut zu machen.
  • Problem
  • Lösung
  • Grund
  • Gedanken


Problem

Während der Integration der Kakao Map API in einer React 18, create-react-app-Umgebung wurde die Karte nicht gerendert!

Da ich ein Skript-Tag innerhalb des head-Tags eingefügt habe, dachte ich, dass es vor dem Rendern des Browsers geladen werden würde.

** Das HTML wurde erstellt, aber es wird nicht angezeigt!!

~Ungefähr der Code, um Kakao Map in das head-Tag von index.html aufzurufen~

<!-- index.html -->
 
<head>
    <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=%REACT_APP_API_KEY%&libraries=services,clusterer,drawing" id="map-lib"></script>
useEffect(() => {
    // map laden    


Aber in der Konsole wurde nur kakao ist nicht definiert angezeigtund nichts wurde gerendert.


Lösung

Grundlage: React-Komponenten greifen nicht direkt auf globale Objekte zu.


Lösung 1-1

Deklarieren Sie den kakao-Attribut außerhalb der Komponentenfuktion als globales Objekt.

const { kakao } = window;

function Map() {
    //...


Lösung 1-2

Erstellen Sie separate benutzerdefinierte Hooks für die Funktionen, die zum Rendern der Kakao-Karte benötigt werden.

//hooks/useKakaoMap.js

const { kakao } = window;

function useKakaoMap() {
    const initializeMap = useCallback(() => {
        const container = document.getElementById('map');
        const options = {
        center: new kakao.maps.LatLng(33.450701, 126.570667),
            level: 3
        };
        const newMap = new kakao.maps.Map(container, options);
        setMap(newMap);
    }, []);

    //...    
    
    return {
        initializeMap
    }
}

export default useKakaoMap;

//Map.js

function Map() {
    
    const {
        initializeMap,
    } = useKakaoMap();
    
    useEffect(() => {
        initializeMap();
    }, [initializeMap]);
    
    
    return(
     <div id="map"></div>
    
    )
    


Drag-Events, Klick-Events, Marker-Handling usw., die Funktionen, die im Allgemeinen für die Karte benötigt werden,

werden

besser in separate benutzerdefinierte Hooks anstatt in die Komponente integriert, da dies in Bezug auf die Wiederverwendbarkeit und Lesbarkeit von Vorteil ist.


Grund

Es ist notwendig, das Konzept von React zu verstehen, warum React nicht auf globale Objekte zugreift.


1) Kapselung und Modularität

- Jede Komponente sollte unabhängig und wiederverwendbar sein. Wenn sich viele Komponenten auf globale Objekte verlassen, geht die Unabhängigkeit verloren und es wird sehr kompliziert.


2) Leistung und einfache Wartung

- React rendert die Komponenten neu, wenn sich der Zustand ändert, und globale Objekte sind nicht gut geeignet, um Zustandsänderungen zu verfolgen.


3) Zustandsverwaltung erfolgt zentral

- Wenn dennoch mehrere Variablen gemeinsam genutzt werden müssen, wird eine zentrale Zustandsverwaltungs-Bibliothek wie Redux verwendet.

Zentrale -> Steuerung des Datenflusses zur Komponente, um Fehler zu vermeiden und die Wartung zu vereinfachen.


* Server-Side Rendering

In letzter Zeit wird Server-Side Rendering häufig für SEO (Suchmaschinenoptimierung) verwendet, aber auf das Window-Objekt kann nicht vom Server aus zugegriffen werden!!


Gedanken

Dies ist ein Fehler, der bei meinem ersten React-Projekt aufgetreten ist.

Ich habe mehr als 2 Jahre Erfahrung mit Vue im professionellen Bereich, aber als ich mit dem React-Projekt begann,

war ich sehr verwirrt, weil ich die Kakao-Karte nicht anzeigen konnte...!!!


Im Vergleich zu Vue ist es im Hinblick auf Ordnerstruktur und Hooks etwas freier, was es eigentlich schwieriger macht.

Ich denke viel darüber nach, wie man effizient schreiben kann.

Ich muss es als ein Spielzeug-Projekt behandeln und mehr lernen.


* Dies ist mein erster Blog, aber durumis ist sehr einzigartig und macht Spaß.

Es bietet auch eine Zusammenfassung in 3 Zeilen, die Koreaner lieben, lol

Kann man nicht auch Entwickler aus dem Ausland treffen?

Der Code-Editor sollte etwas verbessert werden.


Austausch von Meinungen und Kritik sind willkommen~!

Ich wünsche Ihnen einen schönen Tag!




뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍
Grundlegende CSS-Regeln (Normaler Fluss, BFC, IFC) Dieser Artikel beschreibt die grundlegenden Konzepte der CSS-Layout-Struktur, einschließlich Blockelemente, Inline-Elemente, Ränder, Ausrichtung sowie Block Formatting Context (BFC) und Inline Formatting Context (IFC). Er behandelt ausführlich den normale

7. September 2024

[React Hook] useState Dieser Artikel enthält eine detaillierte Erklärung, warum der React useState-Hook bei einem Re-Rendering die gesamte Komponente erneut rendert, wie man Werte beibehält und wie die interne Implementierungsstruktur funktioniert. Durch die Analyse des ReactF
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

14. März 2024

Entwicklungs-Herausforderungen mit der Korea Investment & Securities API: Eine Dokumentation Dieser Blogbeitrag richtet sich an Entwickler, die automatisierte Handelsprogramme mit der Korea Investment & Securities API erstellen möchten. Er behandelt die Schwierigkeiten, die bei der Kontoeröffnung, der Nichtverfügbarkeit von Demo-Trading, Websocke
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Dieser Blogbeitrag richtet sich an Entwickler, die automatisierte Handelsprogramme mit der Korea Investment &amp; Securities API erstellen möchten. Er behandelt die Schwierigkeiten, die bei der Kontoeröffnung, der Nichtverfügbarkeit von Demo-Trading, Websocke
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23. April 2024

Korean Investment & Securities API-Entwicklungsreferenz Dieser Blogbeitrag beschreibt den Prozess des Sammelns von Informationen, die zum Entwickeln eines automatischen Handelsprogramms unter Verwendung der Korean Investment & Securities API erforderlich sind. Durch die Nutzung verschiedener Ressourcen wie der
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Dieser Blogbeitrag beschreibt den Prozess des Sammelns von Informationen, die zum Entwickeln eines automatischen Handelsprogramms unter Verwendung der Korean Investment &amp; Securities API erforderlich sind. Durch die Nutzung verschiedener Ressourcen wie der
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

22. April 2024

[Objekte] Kapitel 1. Objekte, Design In der Softwareentwicklung ist die Praxis wichtiger als die Theorie, und ein gutes Design macht den Code verständlicher und flexibler gegenüber Änderungen. Objektorientiertes Design bietet eine Möglichkeit, die Abhängigkeiten zwischen kooperierenden Objek
제이온
제이온
제이온
제이온

28. April 2024

Schwierigkeiten bei der Entwicklung der 한국투자증권-API Dieser Blog-Post befasst sich ausführlich mit den Schwierigkeiten, die bei der Entwicklung der 한국투자증권-API aufgetreten sind, sowie mit den entsprechenden Lösungen. Er enthält Erfahrungsberichte und Tipps von Entwicklern zu Themen wie Kontoeröffnung, Übertr
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Dieser Blog-Post befasst sich ausführlich mit den Schwierigkeiten, die bei der Entwicklung der 한국투자증권-API aufgetreten sind, sowie mit den entsprechenden Lösungen. Er enthält Erfahrungsberichte und Tipps von Entwicklern zu Themen wie Kontoeröffnung, Übertr
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23. April 2024

Häufig gestellte Fragen Durumis ist ein kostenloser Betaservice, der nach dem Verfassen eines Artikels verschiedene Funktionen wie automatische Übersetzung, Zusammenfassung und Themengenerierung bietet. Derzeit wird die Erstellung von Artikeln auf Mobilgeräten nicht unterstützt,
durumis official blog
durumis official blog
Bild mit der Aufschrift FAQ
durumis official blog
durumis official blog

24. Januar 2024