0Pricing
React Academy · Pelajaran

Berbagi Status dan Perutean Antar-Remote

Bagikan satu instans React Router dan penyimpanan Zustand di antara mikro-frontend yang diterapkan secara independen.

Berbagi Status dan Perutean Antar-Remote adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Tantangan Berbagi Status

Setiap remote Module Federation adalah aplikasi yang dibuat dan diterapkan secara independen. Statusnya (React useState, konteks, dan penyimpanan Zustand) berada dalam lingkup modul JavaScript-nya sendiri. Host dan remote tidak otomatis berbagi status—Anda harus merancang mekanisme berbagi tersebut secara eksplisit.

Opsi 1: URL sebagai Status Bersama

Mekanisme berbagi status yang paling sederhana adalah URL: remote mana pun dapat membaca parameter URL, string kueri, dan nilai hash tanpa komunikasi lintas-remote. Cara ini cocok untuk status navigasi utama, nilai filter, dan status apa pun yang seharusnya dapat ditandai serta dibagikan melalui tautan.

Opsi 2: CustomEvents untuk Keterikatan Longgar

CustomEvents melalui EventTarget browser memungkinkan remote berkomunikasi tanpa impor langsung. Sebuah remote menjalankan window.dispatchEvent(new CustomEvent('cart:updated', { detail: cart })), lalu modul lain mana pun (host atau remote lainnya) mendengarkan dengan window.addEventListener('cart:updated', handler). Modul bersama tidak diperlukan.

Opsi 3: Remote Status Bersama

Buat "remote status" khusus yang mengekspos penyimpanan Zustand atau Jotai. Host dan remote lainnya mengimpor dari remote status ini dan mendapatkan instans penyimpanan yang sama—karena penyimpanan tersebut merupakan singleton bersama. Cara ini sangat berguna untuk status kompleks yang digunakan bersama (autentikasi, keranjang, dan preferensi pengguna), tetapi menambah dependensi penerapan.

Opsi 4: Host Memiliki Status dan Meneruskan Fungsi Panggilan Balik

Shell (host) memiliki semua status bersama dan meneruskannya ke remote sebagai properti atau melalui konteks. Remote menerima fungsi panggilan balik seperti onCartUpdate dan navigasi sebagai properti. Cara ini memusatkan status di host, tetapi mengharuskan host mengetahui API remote sehingga menciptakan keterikatan yang erat.

React Router dalam Module Federation

Status riwayat dan lokasi React Router disediakan oleh komponen Router (BrowserRouter atau createBrowserRouter). Harus ada tepat satu Router dalam penyiapan Module Federation—menempatkannya di setiap remote akan membuat beberapa konteks perutean yang saling bersaing dan menyebabkan konflik navigasi.

Host Memiliki Router

Aturan arsitekturnya adalah: host (shell) menyediakan Router. Remote menerima properti perutean dari host (atau membaca URL secara langsung). Remote tidak boleh membuat BrowserRouter sendiri—hal itu akan bertentangan dengan Router milik host dan merusak navigasi seluruh aplikasi.

Berbagi Konteks di antara Remote

Nilai konteks React terikat pada instans React dan objek konteks tertentu. Agar konteks dapat digunakan oleh host dan remote, keduanya harus mengimpor objek konteks yang sama dari sumber yang sama—biasanya remote status bersama atau paket utilitas bersama. Singleton React memastikan konteks yang sama dapat digunakan oleh semua remote.

Pola Arsitektur Shell

Dalam arsitektur Module Federation yang rapi, shell (host) memiliki: shell HTML, penyedia Router, konteks Auth, penyedia token tema/desain, dan navigasi global. Remote memiliki konten domain fiturnya masing-masing. Shell menyusun remote ke dalam tata letak tanpa perlu mengetahui detail implementasinya.

Menghindari Keterikatan yang Erat

Antipola terbesar dalam Module Federation adalah keterikatan erat antara host dan remote: host mengimpor tipe dari remote, remote mengimpor komponen dari host, atau keduanya berbagi paket npm yang harus diperbarui secara bersamaan. Keterikatan ini menggagalkan tujuan penerapan independen.

Kontrak Komunikasi

Tentukan kontrak yang jelas antara host dan remote: properti yang diterima komponen remote, CustomEvents yang dikirimkannya, dan parameter URL yang dibacanya. Dokumentasikan kontrak ini sebagai antarmuka TypeScript dalam paket tipe bersama. Dengan demikian, tim dapat berkembang secara independen dalam batas kontrak yang disepakati.

Penempatan React Router dalam Module Federation

Di mana penyedia React Router (BrowserRouter) harus ditempatkan dalam arsitektur Module Federation?

Ringkasan Pelajaran

Berbagi status di antara remote Module Federation dapat menggunakan status URL (paling sederhana), CustomEvents (keterikatan longgar), remote status bersama (penyimpanan terpusat), atau status milik host yang diteruskan sebagai properti. Host harus memiliki satu-satunya penyedia Router—remote tidak boleh membuat Router sendiri. Kontrak komunikasi yang jelas melalui antarmuka TypeScript menjaga keterpisahan tim dan memungkinkan penerapan independen yang sesungguhnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Berbagi Status dan Perutean Antar-Remote” gratis?

Ya — teks lengkap “Berbagi Status dan Perutean Antar-Remote” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Berbagi Status dan Perutean Antar-Remote”?

Bagikan satu instans React Router dan penyimpanan Zustand di antara mikro-frontend yang diterapkan secara independen. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Berbagi Status dan Perutean Antar-Remote” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Federasi Modul: Impor Runtime Dinamis
  2. Mengonfigurasi Aplikasi React Host dan Jarak Jauh
  3. Berbagi Status dan Perutean Antar-Remote
  4. Pemberian Versi, Penerapan, dan Orkestrasi
← Kembali ke React Academy