Custom-Komponenten
Custom-Komponenten bieten maximale Flexibilität und Kontrolle über Ihre brokerize-Integration. Im Gegensatz zur Haupt-Komponente ermöglichen Custom-Komponenten Ihnen, genau die Benutzeroberfläche zu erstellen, die Sie benötigen, indem Sie einzelne brokerize-Komponenten separat verwenden.
Wann Custom-Komponenten wählen
Custom-Komponenten sind ideal, wenn Sie benötigen:
- Benutzerdefinierte Layouts - Spezifische Positionierung und Anordnung von UI-Elementen
- Selektive Funktionalität - Nur bestimmte brokerize-Features in Ihrer Anwendung
- Erweiterte Integration - Tiefe Integration mit bestehenden UI-Frameworks oder Design-Systemen
- Benutzerdefinierte Benutzerführung - Vollständige Kontrolle über die Benutzerreise und Navigation
- Granulare Kontrolle - Feinabstimmung des Verhaltens und Stylings einzelner Komponenten
Voraussetzungen
Installation
npm install @brokerize/elements @brokerize/client
Brokerize Client einrichten
Erstellen Sie zunächst eine brokerize Client-Instanz:
import { Brokerize } from '@brokerize/client';
const brokerizeClient = new Brokerize({
basePath: 'https://api-preview.brokerize.com', // Preview-Umgebung verwenden
clientId: '<YOUR-API-CLIENT-ID>',
fetch: globalThis.fetch.bind(globalThis),
createAbortController: () => new AbortController(),
createWebSocket: (url, protocol) => new WebSocket(url, protocol)
});
API-Kontext erstellen
const user = await brokerizeClient.createGuestUser();
const apiCtx = brokerizeClient.createAuthorizedContext(user);
Verfügbare Custom-Komponenten
Broker-Liste Komponente
Zeigen Sie eine Liste verfügbarer Broker mit benutzerdefinierter Behandlung an:
import { createBrokerList } from '@brokerize/elements';
createBrokerList({
authorizedApiContext: apiCtx,
theme: theme,
addFrame: addFrame,
renderTo: document.getElementById('broker-list-container'),
onLogin({ brokerName }) {
// Benutzerdefinierte Login-Behandlung
// Zeige benutzerdefinierte Login-UI oder leite zu Ihrem Login-Flow weiter
showCustomLoginModal(brokerName);
},
openExternalLink: (url) => {
// Benutzerdefinierte externe Link-Behandlung
window.open(url, '_blank');
}
});
Overview-Komponente
Implementieren Sie benutzerdefinierte Overview-Funktionalität:
import { createOverview } from '@brokerize/elements';
createOverview({
theme,
renderTo: resetRenderTo(),
authorizedApiContext: globalApiCtx,
onNavigate(portfolio) {
/* navigate to the selected portfolio view, e.g. by calling `createPortfolioView(...)` */
// showPortfolioView(portfolio.id);
},
onLogin({ brokerName }) {
/* open the broker login for the given brokerName. */
// createBrokerLoginForm(...) // function from @brokerize/elements
}
});
Broker-Login-Komponente
Implementieren Sie Broker-Login-Funktionalität:
import { createBrokerLoginForm } from '@brokerize/elements';
createBrokerLoginForm({
authorizedApiContext,
theme,
addFrame,
renderTo,
brokerName,
performOAuthRedirect({ url }) {
/*
if the broker login is implemented using OAuth redirects,
this callback will be called with the URL to redirect to.
After login, the client will redirect back to the configurated application URL.
After that redirect, the client application must use `confirmOAuth` to confirm
the session.
*/
},
onExit: ({ loggedIn }) => {
/* application can handle a successful broker login (e.g. show a SessionsTable or PortfolioTable) */
},
openExternalLink
});
Custom-Komponenten Workflow
1. Komponenten-Initialisierung
Richten Sie Ihren brokerize Client und API-Kontext ein, wie im Voraussetzungen-Abschnitt gezeigt.
2. Einzelne Komponenten erstellen
Verwenden Sie die entsprechenden Factory-Funktionen, um nur die Komponenten zu erstellen, die Sie benötigen:
// Erstelle mehrere Komponenten für ein benutzerdefiniertes Layout
const brokerList = createBrokerList({ /* config */ });
const overview = createOverview({ /* config */ });
const brokerlogin = createBrokerLoginForm({ /* config */ });
3. Komponenten-Interaktionen behandeln
Implementieren Sie benutzerdefinierte Logik für Komponenten-Interaktionen durch Callbacks:
createBrokerList({
// ... andere Konfiguration
onLogin({ brokerName }) {
// Verstecke Broker-Liste, zeige Login-Formular
hideBrokerList();
showLoginForm(brokerName);
}
});
4. Komponenten-Lebenszyklus verwalten
Kontrollieren Sie, wann Komponenten erstellt, aktualisiert und zerstört werden:
class TradingApp {
private components = new Map();
showBrokerSelection() {
const brokerList = createBrokerList({
// ... Konfiguration
onLogin: (data) => this.handleBrokerLogin(data)
});
this.components.set('brokerList', brokerList);
}
handleBrokerLogin(data) {
// Räume Broker-Liste auf
this.components.get('brokerList')?.destroy();
this.components.delete('brokerList');
// Zeige Portfolio
this.showPortfolio();
}
}
5. Benutzerdefiniertes Routing implementieren
Behandeln Sie Navigation zwischen verschiedenen Ansichten:
class Router {
navigate(route, params = {}) {
switch(route) {
case 'brokers':
this.showBrokerList();
break;
case 'portfolio':
this.showOverview(params.brokerId);
break;
case 'trade':
this.showBrokerLoginForm(params.brokerId);
break;
}
}
}
Theming von Custom-Komponenten
Custom-Komponenten verwenden das gleiche Theming-System wie die Haupt-Komponente:
const theme = {
layout: 'columns',
logoStyle: 'light',
tokens: {
'zl-primary-color': '#3870db',
'zl-primary-bg-color': 'white',
'zl-secondary-bg-color': 'var(--zl-color-gray-lighter)',
'zl-outline-color': 'var(--zl-color-primary-light)',
'zl-default-text-color': 'var(--zl-color-gray-darkest)',
'zl-success-color': '#3db969',
'zl-error-color': '#ff3e3e',
// ... zusätzliche Theme-Token
}
};
// Theme auf alle Komponenten anwenden
createBrokerList({ theme, /* ... */ });
createPortfolio({ theme, /* ... */ });
Im Artikel zum Theming gibt es mehr Informationen, Beispiele und eine Live Demo.
Erweiterte Integrationsmuster
Zustandsverwaltung
class BrokerizeStateManager {
private state = {
selectedBroker: null,
portfolio: null,
activeInstrument: null
};
private listeners = new Set();
setState(updates) {
this.state = { ...this.state, ...updates };
this.notifyListeners();
}
subscribe(listener) {
this.listeners.add(listener);
return () => this.listeners.delete(listener);
}
private notifyListeners() {
this.listeners.forEach(listener => listener(this.state));
}
}
Bewährte Praktiken
-
Komponenten-Lebenszyklus-Management: Räumen Sie Komponenten immer auf, wenn sie nicht mehr benötigt werden, um Memory Leaks zu verhindern.
-
Fehlerbehandlung: Implementieren Sie ordnungsgemäße Fehlerbehandlung für alle Komponenten-Interaktionen:
-
Ladezustände: Bieten Sie Feedback wie zum Beispiel eigene Lade-Spinner, während der Komponenten-Initialisierung:
-
Responsive Design: Stellen Sie sicher, dass Komponenten auf verschiedenen Bildschirmgrößen gut funktionieren, indem Sie entsprechende Themes und Layouts konfigurieren.
-
Barrierefreiheit: Halten Sie Barrierefreheitsstandards ein, indem Sie Focus-Management und Tastaturnavigation zwischen Custom-Komponenten ordnungsgemäß behandeln.
Custom-Komponenten geben Ihnen die Macht, genau die Trading-Erfahrung zu schaffen, die Ihre Benutzer benötigen, mit vollständiger Kontrolle über jeden Aspekt der Oberfläche und des Benutzerflusses.