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

Đây là bài viết được dịch bởi AI.

뚠뚠멍의 생각들

React - kakao is not defined cách giải quyết tốt nhất

  • Ngôn ngữ viết: Tiếng Hàn Quốc
  • Quốc gia cơ sở: Tất cả các quốc gia country-flag

Chọn ngôn ngữ

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

Văn bản được tóm tắt bởi AI durumis

  • Vấn đề bản đồ không được hiển thị khi tích hợp API bản đồ Kakao vào môi trường React 18 bằng create-react-app là do component React không truy cập trực tiếp vào đối tượng toàn cục.
  • React không truy cập trực tiếp vào đối tượng toàn cục vì lý do đóng gói, hiệu suất và quản lý trạng thái, thay vào đó sử dụng các thư viện quản lý trạng thái tập trung như Redux để điều khiển luồng dữ liệu.
  • Khác với Vue, React mang lại cảm giác tự do hơn trong cấu trúc thư mục và hook, nhưng nó có thể khó khăn hơn đối với các nhà phát triển mới làm quen. Do đó, việc làm quen với React thông qua các dự án thử nghiệm là một lựa chọn tốt.
  • Vấn đề
  • Giải pháp
  • Lý do
  • Cảm nhận


Vấn đề

Trong môi trường React 18, create-react-app khi liên kết với API của Kakao Map, bản đồ không được render!

Tôi đã chèn thẻ script bên trong thẻ head, nên tôi nghĩ rằng nó sẽ được tải trước khi trình duyệt render.

**HTML đã được viết nhưng không hiển thị!!**

~Gần như mã để gọi Kakao Map trong thẻ head của 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 불러오기    


Tuy nhiên, trong console chỉ xuất hiện kakao is not defined mà thôi và không có gì được render.


Giải pháp

Cơ bản: Thành phần của React không truy cập trực tiếp vào đối tượng toàn cục.


Giải pháp 1-1

Khai báo thuộc tính kakao từ đối tượng toàn cục bên ngoài hàm thành phần.

const { kakao } = window;

function Map() {
    //...


Giải pháp 1-2

Viết các hàm cần thiết để render Kakao Map thành một hook tùy chỉnh riêng biệt.

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


Các sự kiện kéo thả, nhấp chuột, xử lý đánh dấu, v.v. thường được sử dụng cho bản đồ

thay vì triển khai trong thành phần,

tách riêng chúng thành hook tùy chỉnh sẽ tốt hơn về khả năng tái sử dụng và khả năng đọc.


Lý do

Lý do React không truy cập vào đối tượng toàn cục - cần hiểu khái niệm của React.


1) Thuộc tính đóng gói và tính mô-đun

- Mỗi thành phần phải độc lập và có thể tái sử dụng. Nếu nhiều thành phần phụ thuộc vào đối tượng toàn cục, tính độc lập sẽ bị mất và mọi thứ sẽ trở nên cực kỳ phức tạp.


2) Hiệu suất và bảo trì dễ dàng

- React sẽ render lại khi trạng thái thay đổi, nhưng đối tượng toàn cục không phù hợp để theo dõi các thay đổi trạng thái.


3) Quản lý trạng thái tập trung

- Tuy nhiên, nếu bạn muốn chia sẻ nhiều biến, hãy sử dụng các thư viện quản lý trạng thái tập trung như Redux.

Tập trung -> Điều khiển luồng dữ liệu đến thành phần để tránh lỗi và dễ dàng bảo trì.


* Render phía máy chủ

Gần đây, render phía máy chủ được sử dụng nhiều để tối ưu hóa SEO (tối ưu hóa công cụ tìm kiếm), nhưng đối tượng window không thể truy cập từ phía máy chủ!!


Cảm nhận

Đây là những thử nghiệm mà tôi đã trải qua trong dự án React đầu tiên của mình.

Tôi đã làm việc với vue trong hơn 2 năm, nhưng khi bắt đầu dự án React,

tôi đã khá bối rối khi không thể hiển thị Kakao Map...!!!


So với vue, cấu trúc thư mục và hook có vẻ tự do hơn một chút, nên tôi thấy khó hơn.

Tôi đã suy nghĩ rất nhiều về cách viết hiệu quả nhất.

Tôi cần phải thực hành thêm với các dự án thử nghiệm, giống như một món đồ chơi.


* Đây là lần đầu tiên tôi viết blog, durumis khá độc đáo và thú vị.

Họ cũng đưa ra bản tóm tắt 3 dòng mà người Hàn Quốc yêu thích, haha

Có thể tôi cũng có thể gặp gỡ các nhà phát triển nước ngoài?

Tôi muốn trình chỉnh sửa mã được cải thiện một chút.


Chào mừng thảo luận và phê bình!~!

Chúc bạn một ngày vui vẻ!




뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍의 생각들
뚠뚠멍
Các quy tắc cơ bản của CSS (Luồng bình thường, BFC, IFC) Để giải quyết các vấn đề phát sinh khi cấu trúc bố cục CSS, bài viết này sẽ giải thích các khái niệm về Luồng bình thường, BFC, IFC, giới thiệu đặc điểm và ví dụ ứng dụng của mỗi yếu tố. Đặc biệt, bài viết sẽ đi sâu vào cách áp dụng BFC để giải quyết vấn

7 tháng 9, 2024

[React Hook] useState Bài viết này giải thích lý do tại sao React useState hook lại render lại toàn bộ component khi render lại, cách duy trì giá trị, và mô tả chi tiết cấu trúc triển khai bên trong. Phân tích mã ReactFiberHooks.js để hiểu cách hoạt động của hook, và xác định
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

14 tháng 3, 2024

Ghi lại những khó khăn trong quá trình phát triển API của Hàn Quốc Investment & Securities Đây là một bài viết trên blog dành cho các nhà phát triển muốn tạo ra các chương trình giao dịch tự động bằng cách sử dụng API của Hàn Quốc Investment & Securities. Bài viết giới thiệu những khó khăn mà bạn gặp phải trong quá trình phát triển như mở tài k
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
Đây là một bài viết trên blog dành cho các nhà phát triển muốn tạo ra các chương trình giao dịch tự động bằng cách sử dụng API của Hàn Quốc Investment &amp; Securities. Bài viết giới thiệu những khó khăn mà bạn gặp phải trong quá trình phát triển như mở tài k
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

23 tháng 4, 2024

Câu chuyện phát triển dự án LegiNote 3 - Request in Go Bài viết thứ 2 trong chuỗi bài viết về dự án phụ LegiNote sẽ đi sâu vào quá trình phát triển 'worker-bill', công cụ thu thập thông tin về dự luật bằng cách sử dụng OpenAPI của Quốc hội. Bài viết này sẽ giải thích chi tiết quá trình phát triển, bao gồm chu
statpan
statpan
Bài viết thứ 2 trong chuỗi bài viết về dự án phụ LegiNote sẽ đi sâu vào quá trình phát triển 'worker-bill', công cụ thu thập thông tin về dự luật bằng cách sử dụng OpenAPI của Quốc hội. Bài viết này sẽ giải thích chi tiết quá trình phát triển, bao gồm chu
statpan
statpan

26 tháng 8, 2024

Bạn vẫn đang nhập kiểu dữ liệu thủ công từng cái một? Hotscript, một thư viện kiểu dữ liệu bậc cao cho TypeScript, cho phép bạn tổ chức rõ ràng các định nghĩa kiểu trong mã của mình.
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

13 tháng 8, 2024

[Hiệu quả Java] Mục 6. Tránh tạo đối tượng không cần thiết Hướng dẫn về cách giảm thiểu việc tạo đối tượng không cần thiết trong Java. Đối với các đối tượng bất biến như String, Boolean, nên sử dụng literal, và đối với biểu thức chính quy, tốt nhất nên cache instance Pattern. Ngoài ra, việc auto-boxing có thể dẫn
제이온
제이온
제이온
제이온

28 tháng 4, 2024

Bộ sưu tập FAQ Durumis là một dịch vụ beta miễn phí cung cấp các tính năng đa dạng như dịch tự động, tóm tắt và tạo chủ đề sau khi viết bài. Hiện tại, việc viết bài trên thiết bị di động không được hỗ trợ, các tính năng như bình luận, đăng bài theo lịch hẹn, báo cáo sẽ
durumis official blog
durumis official blog
Hình vẽ ghi FAQ
durumis official blog
durumis official blog

24 tháng 1, 2024