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

Esta es una publicación traducida por IA.

뚠뚠멍의 생각들

React - ¿Cómo resolver el error "kakao no está definido"?

Seleccionar idioma

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

Texto resumido por la IA durumis

  • El problema de que el mapa no se renderice al integrar la API de mapas de Kakao en un entorno create-react-app de React 18 se debe a que los componentes de React no acceden directamente a los objetos globales.
  • React evita acceder directamente a objetos globales para lograr la encapsulación, el rendimiento y la gestión del estado, utilizando bibliotecas de gestión de estado centralizadas como Redux para controlar el flujo de datos.
  • A diferencia de Vue, React ofrece una sensación de libertad en la estructura de carpetas, los hooks, etc., pero puede resultar desafiante para los desarrolladores principiantes. Se recomienda familiarizarse con React mediante proyectos de prueba.
  • Problema
  • Solución
  • Razón
  • Reflexiones


Problema

¡Durante la integración de la API de Kakao Map en un entorno de React 18, create-react-app, el mapa no se renderizó!

Pensé que se cargaría antes de que el navegador se renderizara ya que la etiqueta de script se insertó dentro de la etiqueta de encabezado.

**¡Escribí el código HTML, pero no se ve!**

~ Aproximadamente el código para cargar Kakao Map dentro de la etiqueta de encabezado de 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(() => {
    // cargar mapa    


Sin embargo, en la consola, solo se registró kakao no está definidoy no se renderizó nada.


Solución

Fundamentos: los componentes de React no acceden directamente a objetos globales.


Solución 1-1

Declare la propiedad kakao del objeto global fuera de la función del componente.

const { kakao } = window;

function Map() {
    //...


Solución 1-2

Cree un gancho personalizado para las funciones necesarias para renderizar el mapa de Kakao.

//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>
    
    )
    


En general, las funciones necesarias para el mapa, como los eventos de arrastre, los eventos de clic y el manejo de marcadores,

en lugar de implementarse dentro del componente,

es mejor separarlas en un gancho personalizado en términos de reutilización y legibilidad.


Razón

Es necesario comprender el concepto de React para comprender por qué React no accede a objetos globales.


1) Encapsulación y modularidad

- Cada componente debe ser independiente y reutilizable. Si dependemos de objetos globales en muchos componentes, perderemos la independencia y nos volveremos muy complejos.


2) Rendimiento y fácil mantenimiento

- React vuelve a renderizar cuando cambia el estado, pero los objetos globales no son adecuados para rastrear los cambios de estado.


3) La administración del estado es centralizada

- Si aún necesita compartir varias variables, use una biblioteca de administración de estado centralizada como Redux.

Centralizado -> Controlar el flujo de datos al componente para evitar errores y facilitar el mantenimiento.


* Renderizado del lado del servidor

Actualmente, el renderizado del lado del servidor se utiliza ampliamente para SEO (optimización de la exposición en los motores de búsqueda), pero el objeto window no se puede acceder desde el lado del servidor.


Reflexiones

Esta fue una prueba y error que encontré mientras realizaba mi primer proyecto de React.

He estado trabajando con vue durante más de 2 años, pero cuando comencé a trabajar en un proyecto de React

¡Me sorprendió mucho no poder mostrar el mapa de Kakao ...!


En comparación con vue, se siente un poco más libre en términos de estructura de carpetas, ganchos, etc., lo que lo hace más difícil.

Pienso mucho en cómo escribirlo de manera eficiente.

Debería aprender más jugando con el proyecto de juguete, como su nombre lo indica.


* Esta es mi primera vez blogueando, y durumis es bastante único y divertido.

También proporciona un resumen de 3 líneas que a los coreanos les encanta, jajaja.

¿Podríamos conocer a desarrolladores extranjeros?

Sería genial si el editor de código se mejorara un poco.


¡Comentarios e ideas son bienvenidos!

¡Que tengas un gran día!




뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍
Reglas básicas de CSS (Flujo normal, BFC, IFC) Se explican los conceptos básicos que componen el diseño de CSS, como los elementos de bloque, los elementos en línea, el margen, la alineación y el BFC (contexto de formato de bloque) y el IFC (contexto de formato en línea). Se detallan el flujo normal d

7 de septiembre de 2024

[React Hook] useState Este artículo contiene una explicación detallada de por qué el gancho useState de React vuelve a renderizar todo el componente al volver a renderizar, cómo mantener los valores y la estructura interna de la implementación. El análisis del código de React
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

14 de marzo de 2024

Registro de dificultades en el desarrollo de la API de Korea Investment Securities Esta publicación de blog es para desarrolladores que desean crear un programa de negociación automática utilizando la API de Korea Investment Securities. Presenta las dificultades encontradas durante el proceso de desarrollo, como la apertura de cuentas,
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Esta publicación de blog es para desarrolladores que desean crear un programa de negociación automática utilizando la API de Korea Investment Securities. Presenta las dificultades encontradas durante el proceso de desarrollo, como la apertura de cuentas,
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 de abril de 2024

[Objetos] Capítulo 1. Objetos, diseño En el desarrollo de software, la práctica es más importante que la teoría, y un buen diseño ayuda a que el código sea fácil de entender y a que se adapte flexiblemente a los cambios. La orientación a objetos proporciona una forma de gestionar adecuadament
제이온
제이온
제이온
제이온

28 de abril de 2024

Preguntas frecuentes Durumis es un servicio beta gratuito que ofrece una variedad de funciones, como traducción automática, resumen y generación de temas, después de escribir un artículo. Actualmente, la creación de publicaciones no es compatible en dispositivos móviles, y la
durumis official blog
durumis official blog
Imagen que dice FAQ
durumis official blog
durumis official blog

24 de enero de 2024

Dificultades encontradas al desarrollar la API de Korea Investment Securities Esta publicación de blog trata en detalle las dificultades encontradas durante el desarrollo de la API de Korea Investment Securities y las soluciones para resolverlas. Se comparten las experiencias y consejos de los desarrolladores, como la apertura de c
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Esta publicación de blog trata en detalle las dificultades encontradas durante el desarrollo de la API de Korea Investment Securities y las soluciones para resolverlas. Se comparten las experiencias y consejos de los desarrolladores, como la apertura de c
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 de abril de 2024

Noticias e itinerario de inicio de semana del 1 de mayo Noticias sobre el estado actual de la inversión en empresas emergentes en Corea del Sur, los logros de las principales empresas, el lanzamiento y la actualización de nuevos servicios, y las tendencias de la industria. Consulte las principales noticias, co
스타트업 커뮤니티 씬디스 (SeenThis.kr)
스타트업 커뮤니티 씬디스 (SeenThis.kr)
스타트업 커뮤니티 씬디스 (SeenThis.kr)
스타트업 커뮤니티 씬디스 (SeenThis.kr)

30 de abril de 2024