SettingsView-Komponente für Stripe-Apps
Ermöglichen Sie Nutzerinnen und Nutzern, Details zur Art und Weise, wie die App mit ihrem Konto funktioniert, zu ändern.
Sie können eine spezielle Einstellungsansicht festlegen, damit Nutzer/innen bestimmte Details in Bezug auf die Art und Weise, wie die App mit ihrem Konto funktioniert, ändern können. Beispielsweise könnte eine App, die eine Drittanbieter-API wie Zendesk verwendet, SettingsView
verwenden, um eine/n Nutzer/in bei seinem/ihrem Zendesk-Konto zu autorisieren. Um mehr zu erfahren, lesen Sie, wie Sie Ihrer App eine Einstellungsseite hinzufügen.

Darstellung von SettingsView
SettingsView
ist, genau wie ContextView
, eine Ansichts-Root-Komponente, die alle anderen Nutzeroberflächen-Elemente enthält. Es ist die einzige Ansicht, die an kein bestimmtes Objekt, wohl aber an das Darstellungsfeld settings
gebunden ist. Das Darstellungsfeld settings
wird dabei festgelegten Stellen im Dashboard außerhalb der App-Schublade zugeordnet.
SettingsView
wird auf der Seite mit den App-Einstellungen im Dashboard gerendert, nachdem Sie eine App hochgeladen haben. Wenn Sie Ihre App in der Vorschau lokal anzeigen, können Sie eine Vorschau der SettingsView
im Dashboard unter https://dashboard.stripe.com/apps/settings-preview anzeigen.
Um SettingsView
zu nutzen, müssen Sie eine Ansicht mit dem Darstellungsfeld settings
zu Ihrem App-Manifest hinzufügen. Eine Anwendung mit einer Einstellungsansicht hätte ein App-Manifest mit einem Feld ui_
, das ungefähr so aussieht:
{ ..., "ui_extension": { "views": [ ..., { "viewport": "settings", "component": "AppSettings" } ], } }
SettingsView-Eigenschaften
Eigenschaft | Typ |
---|---|
| Pflichtfeld
Der Inhalt der Komponente. |
| Optional
Falls angegeben, wird eine |
| Optional
Eine Zeichenfolge, die einen Status wie „Gespeichert“ oder „Fehler“ in der Kopfzeile der Ansicht anzeigt. |
Beispiel
In diesem Beispiel wird gezeigt, wie Einstellungen aus einer externen API abgerufen, angezeigt und Änderungen gespeichert werden.
import React from 'react'; import {ExtensionContextValue} from '@stripe/ui-extension-sdk/context'; import {Box, SettingsView, TextField} from '@stripe/ui-extension-sdk/ui'; type FormStatus = 'initial' | 'saving' | 'saved' | 'error'; const AppSettings = ({userContext}: ExtensionContextValue) => { const [storedValue, setStoredValue] = React.useState<string>(''); const [status, setStatus] = React.useState<FormStatus>('initial'); // use the current user id to retrieve the stored value from an external api const key = userContext.id; React.useEffect(() => { if (!key) { return; } const fetchSetting = async (key: string) => { try { const response = await fetch(`https://www.my-api.com/${key}`); const storedSettingValue = await response.text(); if (storedSettingValue) { setStoredValue(storedSettingValue); } } catch (error) { console.log('Error fetching setting: ', error); } }; fetchSetting(key); }, [key]); const saveSettings = React.useCallback(async (values) => { setStatus('saving'); try { const {greeting} = values; const result = await fetch('https://www.my-api.com/', { method: 'POST', body: JSON.stringify(values), }); await result.text(); setStatus('saved'); setStoredValue(greeting); } catch (error) { console.error(error); setStatus('error'); } }, []); const getStatusLabel = React.useCallback(() => { switch (status) { case 'saving': return 'Saving...'; case 'saved': return 'Saved!'; case 'error': return 'Error: There was an error saving your settings.'; case 'initial': default: return ''; } }, [status]); const statusLabel = getStatusLabel(); return ( <SettingsView onSave={saveSettings} statusMessage={statusLabel}> <Box css={{ padding: 'medium', backgroundColor: 'container', }} > <Box css={{ font: 'lead', }} > Please enter a greeting </Box> <Box css={{ marginBottom: 'medium', font: 'caption', }} > Saved value: {storedValue || 'None'} </Box> <TextField name="greeting" type="text" label="Greeting:" size="medium" /> </Box> </SettingsView> ); };