# 📦 locationDevicesFromDBSlice Zuständig für das Laden und Speichern der Geräteinformationen pro Standort (Location) aus der Datenbank. ## 🧠 Zweck Dieses Slice verwaltet die Geräte, die mit einem bestimmten Standort (Location) verknüpft sind. Es nutzt ein `createAsyncThunk`, um die Daten vom Webservice bzw. von der lokalen Datenbank zu laden. --- ## 🔁 Datenfluss 1. **Dispatch `fetchLocationDevicesFromDB()`** 2. **Daten werden über `fetchLocationDevices()` geladen** 3. **Status wird aktualisiert (`loading`, `succeeded`, `failed`)** 4. **Geräte-Liste (`devices`) wird gespeichert** --- ## 🧩 Slice-Definition ```js initialState: { devices: [], // Geräte-Liste pro Standort status: "idle", // "idle" | "loading" | "succeeded" | "failed" error: null // Fehlernachricht im Fehlerfall } ``` --- ## 🔧 Actions | Action Type | Beschreibung | |--------------------------------------------|--------------------------------------------------| | `fetchLocationDevicesFromDB/pending` | Startet den Ladeprozess | | `fetchLocationDevicesFromDB/fulfilled` | Speichert die empfangenen Geräte in `devices` | | `fetchLocationDevicesFromDB/rejected` | Speichert die Fehlermeldung in `error` | --- ## 📥 Async Thunk ```ts export const fetchLocationDevicesFromDB = createAsyncThunk( "locationDevicesFromDB/fetchLocationDevicesFromDB", async () => { return fetchLocationDevices(); // API-Aufruf aus services/api } ); ``` Die Funktion `fetchLocationDevices()` befindet sich unter: ``` /redux/api/fromDB/fetchLocationDevices.js ``` --- ## 🧪 Verwendung in Komponenten ### Beispiel mit `useSelector` & `useDispatch` ```tsx import { useSelector, useDispatch } from "react-redux"; import { fetchLocationDevicesFromDB } from "@/redux/slices/db/locationDevicesFromDBSlice"; const dispatch = useDispatch(); const devices = useSelector((state) => state.locationDevicesFromDB.devices); const status = useSelector((state) => state.locationDevicesFromDB.status); useEffect(() => { dispatch(fetchLocationDevicesFromDB()); }, []); ``` --- ## 🧩 Integration im Store ```ts import locationDevicesFromDBReducer from "./slices/db/locationDevicesFromDBSlice"; export const store = configureStore({ reducer: { locationDevicesFromDB: locationDevicesFromDBReducer, // weitere Slices ... }, }); ``` --- ## 📌 Hinweis Dieses Slice ist Bestandteil der neuen Redux-Architektur (ehemals Recoil) → siehe auch `CHANGELOG.md` Version `1.1.97` bis `1.1.98`. ``` Pfad: /redux/slices/db/locationDevicesFromDBSlice.js ```