Hooks-Referenz
Übersicht
Abschnitt betitelt „Übersicht“Rebase stellt React-Hooks bereit, um von jeder Komponente innerhalb des <Rebase> Provider-Baums auf Framework-Funktionen zuzugreifen.
useRebaseContext
Abschnitt betitelt „useRebaseContext“Der Master-Hook – Zugriff auf alles:
import { useRebaseContext } from "@rebasepro/app";
function MyComponent() { const context = useRebaseContext();
context.data // Data operations (flat rows) context.client // The full SDK client context.storageSource // File operations context.authController // Auth state context.navigationStateController // Navigation state context.sidePanelController // Side panel control context.snackbarController // Toast notifications}useAuthController
Abschnitt betitelt „useAuthController“Zugriff auf den Authentifizierungszustand:
import { useAuthController } from "@rebasepro/app";
function UserMenu() { const auth = useAuthController();
auth.user // Current user (or null) auth.initialLoading // Loading initial session auth.signOut() // Log out auth.getAuthToken() // Get JWT for API calls auth.extra // Additional user data (roles, etc.)}useSidePanel
Abschnitt betitelt „useSidePanel“Entitäten programmatisch in einem Seitenfenster öffnen:
import { useSidePanel } from "@rebasepro/cms";
function OpenProductButton({ productId }) { const sidePanel = useSidePanel();
return ( <button onClick={() => { sidePanel.open({ path: "products", entityId: productId, collection: productsCollection }); }}> Produkt öffnen </button> );}Methoden:
| Methode | Beschreibung |
|---|---|
open({ path, entityId, collection }) |
Eine Entität in einem Seitenfenster öffnen |
close() |
Das aktuelle Seitenfenster schließen |
replace({ path, entityId, collection }) |
Den Inhalt des aktuellen Seitenfensters ersetzen |
useSnackbarController
Abschnitt betitelt „useSnackbarController“Toast-Benachrichtigungen anzeigen:
import { useSnackbarController } from "@rebasepro/app";
function SaveButton() { const snackbar = useSnackbarController();
const handleSave = async () => { try { await saveData(); snackbar.open({ type: "success", message: "Saved successfully!" }); } catch (error) { snackbar.open({ type: "error", message: "Save failed" }); } };}useStorageSource
Abschnitt betitelt „useStorageSource“Zugriff auf Dateispeicheroperationen:
import { useStorageSource } from "@rebasepro/app";
function FileUploader() { const storage = useStorageSource();
const upload = async (file: File) => { const result = await storage.putObject({ file, key: `documents/${file.name}` }); const { url } = await storage.getSignedUrl(result.key); return url; };}useModeController
Abschnitt betitelt „useModeController“Hell-/Dunkel-Thema steuern:
import { useModeController } from "@rebasepro/app";
function ThemeToggle() { const mode = useModeController();
return ( <button onClick={() => mode.setMode(mode.mode === "dark" ? "light" : "dark")}> Aktuell: {mode.mode} {/* "light" | "dark" */} </button> );}useSelectionDialog
Abschnitt betitelt „useSelectionDialog“Öffnen eines Seitendialogs zur Auswahl von Entitäten aus einer Sammlung. Dies ist derselbe Hook, der intern verwendet wird, wenn eine Relationseigenschaft gerendert wird:
import { useSelectionDialog } from "@rebasepro/cms";
function SelectProduct() { const selectionDialog = useSelectionDialog({ path: "products", collection: productsCollection, onSingleEntitySelected: (entity) => { console.log("Selected:", entity); } });
return <button onClick={selectionDialog.open}>Produkt auswählen</button>;}useNavigationStateController
Abschnitt betitelt „useNavigationStateController“Zugriff auf Navigationszustand und aufgelöste Sammlungen:
import { useNavigationStateController } from "@rebasepro/cms";
function MyComponent() { const navigation = useNavigationStateController();
navigation.views // Custom views navigation.adminViews // Admin-mode views navigation.topLevelNavigation // Resolved top-level entries}Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Frontend-Übersicht — React-Framework-Referenz
- Client SDK — SDK für Datenoperationen
