@nine-lab/nine-mu 0.1.382 β 0.1.384
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nine-mu.js +33 -18
- package/dist/nine-mu.js.map +1 -1
- package/dist/nine-mu.umd.js +1 -1
- package/dist/nine-mu.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/hook/NineHook.js +30 -18
package/package.json
CHANGED
|
@@ -205,40 +205,52 @@ class NineExceptionHook extends React.Component {
|
|
|
205
205
|
// ==========================================
|
|
206
206
|
// π― 3. ν΅μ¬: μΈλΆ μ£Όμ
ν 404 λΌμ°ν
κΈ°λ₯ νμ¬
|
|
207
207
|
// ==========================================
|
|
208
|
-
|
|
208
|
+
// ==========================================
|
|
209
|
+
// π― 3. μ΅μ’
μκ²°: μμ μ»΄ν¬λνΈ(children)λ₯Ό μμ©νλ κ΅¬μ‘°λ‘ λ³κ²½
|
|
210
|
+
// ==========================================
|
|
211
|
+
export function NineHook({ children, menuUrl, views, error404, onCatch, fallback, styles, containerStyle }) {
|
|
209
212
|
const [menuData, setMenuData] = useState([]);
|
|
210
213
|
|
|
211
|
-
|
|
212
|
-
useEffect(() => {
|
|
214
|
+
const fetchRoutes = async () => {
|
|
213
215
|
if (!menuUrl) return;
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
} catch (e) {
|
|
224
|
-
console.error("[Nine-Library] λ°νμ λ©λ΄ λκΈ°ν μ€ν¨:", e);
|
|
216
|
+
try {
|
|
217
|
+
const response = await fetch(`${menuUrl}?t=${Date.now()}`);
|
|
218
|
+
if (response.ok) {
|
|
219
|
+
const data = await response.json();
|
|
220
|
+
setMenuData((prev) => {
|
|
221
|
+
if (JSON.stringify(prev) === JSON.stringify(data)) return prev;
|
|
222
|
+
console.log("π₯ [Nine-Library] routes.json λ³κ²½ κ°μ§ -> μ 체 μμ€ν
λκΈ°ν");
|
|
223
|
+
return data;
|
|
224
|
+
});
|
|
225
225
|
}
|
|
226
|
-
}
|
|
226
|
+
} catch (e) {
|
|
227
|
+
console.error("[Nine-Library] λ°νμ λ©λ΄ λκΈ°ν μ€ν¨:", e);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
227
230
|
|
|
231
|
+
useEffect(() => {
|
|
228
232
|
fetchRoutes();
|
|
233
|
+
window.addEventListener('popstate', fetchRoutes);
|
|
234
|
+
document.addEventListener('click', fetchRoutes, true);
|
|
235
|
+
const intervalId = setInterval(fetchRoutes, 3000);
|
|
229
236
|
|
|
230
|
-
|
|
237
|
+
return () => {
|
|
238
|
+
window.removeEventListener('popstate', fetchRoutes);
|
|
239
|
+
document.removeEventListener('click', fetchRoutes, true);
|
|
240
|
+
clearInterval(intervalId);
|
|
241
|
+
};
|
|
231
242
|
}, [menuUrl]);
|
|
232
243
|
|
|
233
|
-
// λ°μ΄ν°κ° λ‘λλκΈ° μ μλ κ°λ³κ² λ‘λ© μνλ₯Ό 보μ¬μ£Όκ³ , μλ£λλ©΄ λΌμ°ν° ꡬμΆ
|
|
234
244
|
const dynamicRoutes = createDynamicRoutes(menuData, views, error404);
|
|
235
245
|
|
|
236
246
|
return React.createElement(
|
|
237
247
|
ScreenProvider,
|
|
238
|
-
{ menuData },
|
|
248
|
+
{ menuData }, // π― μ΄ μ μ 컨ν
μ€νΈ 곡κΈμκ° κ°μΈλ λ²μλ₯Ό λν λνλλ€.
|
|
239
249
|
React.createElement(
|
|
240
250
|
NineExceptionHook,
|
|
241
251
|
{ onCatch, fallback, styles, containerStyle },
|
|
252
|
+
// π‘ [λ μ΄μμ μ μ°μ± ν보]: Routes λ°κΉ₯μ μ»΄ν¬λνΈ(μ: LeftMenu)κ° μλ€λ©΄ μ¬κΈ°μ λ¨Όμ λΏλ €μ€λλ€.
|
|
253
|
+
children,
|
|
242
254
|
React.createElement(
|
|
243
255
|
Suspense,
|
|
244
256
|
{ fallback: React.createElement('div', { style: { padding: '25px', color: '#666', fontFamily: 'monospace' } }, '>> Loading component matrix...') },
|