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

Dit is een door AI vertaalde post.

뚠뚠멍의 생각들

React - kakao is not defined hoe los je dit op?

Selecteer taal

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

Samengevat door durumis AI

  • Het probleem dat optreedt wanneer de kaart niet wordt gerenderd tijdens het integreren van de Kakao Map API in een React 18 create-react-app-omgeving, is te wijten aan het feit dat React-componenten geen rechtstreeks toegang hebben tot globale objecten.
  • React vermijdt rechtstreekse toegang tot globale objecten vanwege encapsulatie, prestaties, toestandsbeheer, enz., en gebruikt centrale toestandsbeheerbibliotheken zoals Redux om de datastroom te regelen.
  • In tegenstelling tot Vue geeft React een gevoel van vrijheid in termen van mapstructuren en hooks, maar dit kan voor beginnende ontwikkelaars juist moeilijk zijn. Het is een goed idee om kennis te maken met React via toy-projecten.
  • Probleem
  • Oplossing
  • Reden
  • Gedachten


Probleem

Tijdens het integreren van de Kakao Map API in een React 18-, create-react-app-omgeving, werd de kaart niet gerenderd!

Ik had een script-tag in de head-tag ingevoegd, dus ik dacht dat het zou worden geladen voordat de browser gerenderd werd.

** Ik heb de HTML gemaakt, maar het is niet zichtbaar! **

~ Ongeveer de code om Kakao Map te laden in de head-tag van index.html ~

<!-- 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    


Maar in de console stond alleen 'kakao is not defined' en er werd niets gerenderd.


Oplossing

Basis: React-componenten hebben geen directe toegang tot globale objecten.


Oplossing 1-1

Declareer het kakao-attribuut buiten de component-functie als een globaal object.

const { kakao } = window;

function Map() {
    //...


Oplossing 1-2

Maak een aparte custom hook voor de functies die nodig zijn om de Kakao Map te renderen.

//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, klik-events, marker-handeling en andere functies die normaal gesproken nodig zijn voor de kaart,

zijn beter te implementeren in een custom hook dan in de component zelf.

Dit is beter voor herbruikbaarheid en leesbaarheid.


Reden

De reden waarom React geen toegang heeft tot globale objecten - je moet het concept van React begrijpen.


1) Inkapseling en modulariteit

- Elke component moet onafhankelijk en herbruikbaar zijn. Als alle componenten afhankelijk zijn van globale objecten, verliest de onafhankelijkheid en wordt het heel complex.


2) Prestaties en gemakkelijk onderhoud

- React rendert opnieuw wanneer de toestand verandert, maar globale objecten zijn niet geschikt om toestandsveranderingen bij te houden.


3) Toestandsbeheer centraal

- Gebruik een centraal toestandsbeheer-bibliotheek zoals Redux als je toch variabelen wilt delen.

Centraal -> regel de datastroom naar de componenten om fouten te voorkomen en het onderhoud te vereenvoudigen.


* Server-side rendering

Server-side rendering wordt tegenwoordig veel gebruikt voor SEO (zoekmachine-optimalisatie), maar window-objecten zijn niet toegankelijk vanaf de server!


Gedachten

Dit zijn de lessen die ik heb geleerd tijdens mijn eerste React-project.

Ik heb meer dan 2 jaar ervaring met Vue, maar ik was behoorlijk in de war toen ik met React begon en

de Kakao Map niet kon laten werken...!!!


React voelt wat losser aan dan Vue in termen van mapstructuur en hooks, wat het zelfs moeilijker maakt.

Ik denk veel na over de meest efficiënte manier om te schrijven.

Ik moet dit speelgoedproject, zoals de naam al zegt, als een speelgoed beschouwen en er meer mee leren.


* Dit is mijn eerste blog, maar durumis is heel uniek en leuk.

Ze geven je zelfs een 3-punts samenvatting die Koreanen leuk vinden ㅋㅋ

Zou je niet ook buitenlandse ontwikkelaars kunnen ontmoeten?

De code-editor kan een beetje verbeterd worden.


Ik sta open voor discussie en kritiek!

Geniet van je dag!




뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍
De basisregels van CSS (Normale flow, BFC, IFC) Deze beschrijving behandelt de basisconcepten van CSS-lay-out, waaronder blokelementen, inline-elementen, marges, uitlijning en BFC (Block Formatting Context) en IFC (Inline Formatting Context). We bespreken de normale flow van CSS-elementen, de kenmerken

7 september 2024

[React Hook] useState Deze blogpost beschrijft in detail waarom de useState-hook in React de volledige component opnieuw rendert bij het opnieuw renderen, hoe waarden worden behouden en hoe de interne implementatiestructuur werkt. Door de analyse van de ReactFiberHooks.js-code
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

14 maart 2024

한국투자증권 API 개발 시행착오에 대한 기록 Deze blogpost is bedoeld voor ontwikkelaars die een geautomatiseerd handelsprogramma willen maken met behulp van de 한국투자증권 API. Het beschrijft de moeilijkheden die tijdens het ontwikkelingsproces worden ervaren, zoals het openen van een account, het ontbr
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Deze blogpost is bedoeld voor ontwikkelaars die een geautomatiseerd handelsprogramma willen maken met behulp van de 한국투자증권 API. Het beschrijft de moeilijkheden die tijdens het ontwikkelingsproces worden ervaren, zoals het openen van een account, het ontbr
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 april 2024

한국투자증권 API-ontwikkelingsreferentie Deze blogpost beschrijft het proces van het verzamelen van de benodigde informatie voor het ontwikkelen van een geautomatiseerd handelsprogramma met behulp van de 한국투자증권 API. U kunt verschillende bronnen gebruiken, zoals de officiële website, het KIS Deve
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Deze blogpost beschrijft het proces van het verzamelen van de benodigde informatie voor het ontwikkelen van een geautomatiseerd handelsprogramma met behulp van de 한국투자증권 API. U kunt verschillende bronnen gebruiken, zoals de officiële website, het KIS Deve
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

22 april 2024

Uitdagingen bij het ontwikkelen van de Korea Investment & Securities API Deze blogpost behandelt de uitdagingen en oplossingen die zijn opgedoken tijdens het ontwikkelen van de Korea Investment & Securities API. De post bespreekt ervaringen en tips van een ontwikkelaar over onderwerpen zoals het openen van een rekening, het ov
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Deze blogpost behandelt de uitdagingen en oplossingen die zijn opgedoken tijdens het ontwikkelen van de Korea Investment &amp; Securities API. De post bespreekt ervaringen en tips van een ontwikkelaar over onderwerpen zoals het openen van een rekening, het ov
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 april 2024

[Objecten] Hoofdstuk 1. Objecten, ontwerp In softwareontwikkeling is praktijk belangrijker dan theorie, en goed ontwerp maakt code gemakkelijker te begrijpen en flexibeler om te veranderen. Object- georiënteerd ontwerp biedt een manier om de afhankelijkheden tussen samenwerkende objecten goed te
제이온
제이온
제이온
제이온

28 april 2024

Veelgestelde vragen Durumis is een gratis bètaservice die verschillende functies biedt, zoals automatische vertaling, samenvatting en onderwerpgeneratie na het schrijven van een artikel. Momenteel wordt het schrijven van artikelen op mobiel niet ondersteund en zullen functie
durumis official blog
durumis official blog
Een afbeelding met het woord FAQ
durumis official blog
durumis official blog

24 januari 2024