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

Это сообщение переведено AI.

뚠뚠멍의 생각들

React - как исправить ошибку "kakao is not defined"

  • Язык написания: Корейский
  • Базовая страна: Все страны country-flag

Выбрать язык

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

Текст, резюмированный ИИ durumis

  • Проблема, возникающая при интеграции API карт Kakao в среде React 18, create-react-app, когда карта не отображается, связана с тем, что компоненты React не обращаются к глобальным объектам напрямую.
  • React не обращается к глобальным объектам напрямую из-за таких принципов, как инкапсуляция, производительность и управление состоянием, а также для управления потоком данных использует центральные библиотеки управления состоянием, такие как Redux.
  • В отличие от Vue, React обеспечивает большую свободу в структуре папок, хуках и т. д., но это может затруднить освоение разработчикам, только начинающим работу с React. Рекомендуется освоиться с React, работая над небольшими проектами.
  • Проблема
  • Решение
  • Причина
  • Впечатления


Проблема

При подключении API карт Kakao в среде React 18, create-react-app карта не отображалась!

Я вставил тег script в тег head, поэтому я думал, что он будет загружен до рендеринга браузером.

** Я написал html-код, но он не отображается!!

~Примерно код вызова карт Kakao в теге head 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(() => {
    // загрузка карты    


Но в консоли отображалось только kakao is not defined и ничего не рендерилось.


Решение

Основа: компоненты React не имеют прямого доступа к глобальным объектам.


Решение 1-1

За пределами функции компонента объявить атрибут kakao из глобального объекта.

const { kakao } = window;

function Map() {
    //...


Решение 1-2

Создать отдельный кастомный хук для функций, необходимых для рендеринга карт 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>
    
    )
    


События перетаскивания, клика, обработки маркеров и другие функции, обычно необходимые для карты,

лучше реализовывать не в компоненте,

а разделять их на кастомные хуки с точки зрения повторного использования и удобочитаемости.


Причина

Почему в React не обращаются к глобальным объектам? - Нужно понять концепцию React.


1) Инкапсуляция и модульность

- Каждый компонент должен быть независимым и повторно используемым. Если во многих компонентах будет зависимость от глобальных объектов, это приведет к потере независимости и сильно усложнит работу.


2) Производительность и простое сопровождение

- React повторно рендерит компонент при изменении состояния, а глобальные объекты не подходят для отслеживания изменений состояния.


3) Управление состоянием централизовано

- Если все же нужно разделять несколько переменных, используют библиотеки централизованного управления состоянием, такие как Redux.

Централизованное управление -> управление потоком данных из центра в компоненты, чтобы избежать ошибок и упростить сопровождение.


* Серверный рендеринг

В последнее время для SEO (оптимизации выдачи в поисковых системах) часто используется серверный рендеринг, а к объекту window на сервере получить доступ нельзя!!


Впечатления

Это было моим первым опытом работы с React.

Я более 2 лет работал с vue, но когда я начал проект React,

я был очень удивлен, что не смог отобразить карту Kakao...!!!


React кажется более свободным, чем vue, с точки зрения структуры папок или хуков, что делает его более сложным.

Я много думал о том, как сделать это эффективно.

Я должен продолжать изучать его, играя с ним, как с игрушкой.


* Это мой первый блог, но durumis очень необычный и интересный.

Он также делает 3-строчную сводку, которую любят корейцы, ха-ха.

Может быть, я смогу встретить зарубежных разработчиков?

Редактор кода было бы неплохо немного улучшить.


Буду рад обменяться идеями, приветствуются критические замечания~!

Желаю вам прекрасного дня!




뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍
Основные правила CSS (Нормальный поток, BFC, IFC) В этом материале рассматриваются основные понятия, составляющие CSS-макет: блочные элементы, встроенные элементы, поля, выравнивание, а также BFC (Block Formatting Context) и IFC (Inline Formatting Context). Подробно разбираются нормальный поток элементов

7 сентября 2024 г.

[React Hook] useState В этом документе подробно описано, почему хук useState в React повторно отрисовывает весь компонент при перерисовке, как сохранить значения и внутренняя структура реализации. Анализ кода ReactFiberHooks.js позволяет понять, как работает хук, а также опред
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

14 марта 2024 г.

Записи о трудностях, возникших при разработке API Korea Investment & Securities Эта запись в блоге предназначена для разработчиков, которые хотят создать программу автоматической торговли с использованием API Korea Investment & Securities. В ней рассказывается о трудностях, с которыми приходится сталкиваться на этапах разработки, так
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Эта запись в блоге предназначена для разработчиков, которые хотят создать программу автоматической торговли с использованием API Korea Investment &amp; Securities. В ней рассказывается о трудностях, с которыми приходится сталкиваться на этапах разработки, так
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 апреля 2024 г.

Сборник часто задаваемых вопросов Durumis — это бесплатный бета-сервис, который предлагает различные функции, такие как автоматический перевод, резюмирование и создание тем после написания статьи. В настоящее время мобильные устройства не поддерживают написание статей, а функции комментар
durumis official blog
durumis official blog
Изображение с надписью "FAQ"
durumis official blog
durumis official blog

24 января 2024 г.

[Эффективная Java] Элемент 6. Избегайте ненужного создания объектов Руководство по минимизации ненужного создания объектов в Java. Для неизменяемых объектов, таких как String, Boolean, рекомендуется использовать литералы, а для регулярных выражений – кэшировать экземпляры Pattern. Кроме того, автоупаковка может привести к
제이온
제이온
제이온
제이온

28 апреля 2024 г.

Справочник по разработке API Korea Investment Securities В этом посте в блоге описывается процесс сбора информации, необходимой для разработки программы автоматической торговли с использованием API Korea Investment Securities. Вы можете получить информацию, необходимую для разработки программ автоматической тор
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
В этом посте в блоге описывается процесс сбора информации, необходимой для разработки программы автоматической торговли с использованием API Korea Investment Securities. Вы можете получить информацию, необходимую для разработки программ автоматической тор
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

22 апреля 2024 г.

Сложности при разработке API для 한국투자증권 В этом блоге мы подробно рассмотрим трудности, возникшие во время разработки API для 한국투자증권, и пути их решения. Обсуждаются проблемы с открытием счетов, переводом счетов ISA, отсутствием поддержки виртуальных инвестиций, приемом данных в реальном времен
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
В этом блоге мы подробно рассмотрим трудности, возникшие во время разработки API для 한국투자증권, и пути их решения.  Обсуждаются проблемы с открытием счетов, переводом счетов ISA, отсутствием поддержки виртуальных инвестиций,  приемом данных в реальном времен
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 апреля 2024 г.