Vue · Senior · Pytanie 8 z 75
Jak współdzielić jedną instancję stanu composable między wszystkimi komponentami, które go używają?
export const useOnlineStatus = createSharedComposable(() => {
const online = ref(navigator.onLine);
useEventListener(window, "online", () => (online.value = true));
return { online };
});- ✓Poprawna odpowiedź: Owinąć go helperem shared composable, który uruchamia go raz w
effectScopei usuwa, gdy nie ma już subskrybentów - 2Wywołać composable w
main.tsi zapisać go wwindow - 3Composables zawsze automatycznie współdzielą stan
Wyjaśnienie
Każde zwykłe wywołanie tworzy nowy stan i listenery. createSharedComposable z VueUse liczy subskrybentów i zatrzymuje scope, gdy ostatni komponent zostanie odmontowany.