Accéder directement au contenu
Créez un compte ou connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compteConnectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
API et SDKAide
Aperçu
Gestion des versions
Journal des modifications
Mettre à niveau votre version de l'API
Actualiser votre version du SDK
Essentials
SDK
API
Tests
CLI Stripe
Exemples de projets
Outils
Dashboard Stripe
Workbench
Dashboard des développeurs
Shell Stripe
Stripe pour Visual Studio Code
Fonctionnalités
Workflows
Destinations d'événements
Alertes d'intégrité de StripeChargements de fichiers
Solutions d'IA
Boîte à outils des agents
Modèle de protocole contextuelCréer des flux de facturation SaaS avec l’IA agentique
Sécurité et confidentialité
Sécurité
Robot d'exploration Web Stripebot
Confidentialité
Extensions Stripe
Créer des applications Stripe
    Présentation
    Démarrer
    Créer une application
    Fonctionnement de Stripe Apps
    Exemples d'application
    Créer une application
    Enregistrer des clés secrètes
    Méthodes d'authentification de l'API
    Flux d'autorisation
    Logique côté serveur
    Écouter les événements
    Gérer différents modes
    Activer la prise en charge de l'environnement de test
    Activer l’accès au réseau local
    Page des paramètres d'application
    Concevoir une interface utilisateur
    Inscription des utilisateurs
    Distribuer votre application
    Options de distribution
    Charger votre application
    Versions
    Tester votre application
    Publier votre application
    Faire la promotion de votre application
    Ajouter des liens profonds
    Créer des liens d'installation
    Assigner des rôles dans les extensions d'interface utilisateur
    Actions post-installation
    Analyses de l'application
    Composants intégrés
    Intégrer des applications tierces conçues pour Stripe
    Migrer vers Stripe Apps
    Migrer ou développer une extension
    Migrer un plugin vers Stripe Apps ou Stripe Connect
    Référence
    Manifeste de l'application
    Interface de ligne de commande
    SDK d'extension
    Autorisations
    Fenêtres d'affichage
    Modèles de conception
    Composants
      Accordéon
      Badge
      Bannière
      BarChart
      Composant box
      Bouton
      ButtonGroup
      Case à cocher
      Puce
      ContextView
      DateField
      DetailPageModule
      DetailPagePropertyList
      DetailPageTable
      Séparateur
      FocusView
      FormFieldGroup
      Icône
      Img
      Inline
      LineChart
      Link
      Liste
      Menu
      Vue de prise en main
      PropertyList
      Radio
      Sélectionner
      SettingsView
      SignInView
      Sparkline
      Indicateur de chargement
      Changer
      Table
      Onglets
      Liste des tâches
      TextArea
      TextField
      Message transitoire
      Infobulle
Utiliser les applications de Stripe
Partenaires
Partner ecosystem
Certification des partenaires
États-Unis
Français (France)
AccueilRessources pour les développeursBuild Stripe appsComponents

Composant OnboardingView pour les applications Stripe AppsVersion bêta publique

Utilisez OnboardingView pour implémenter un flux d’inscription de votre application Stripe

Pour ajouter le composant OnboardingView à votre application :

import {OnboardingView} from '@stripe/ui-extension-sdk/ui';

Le composant OnboardingView fournit un moyen standardisé d’implémenter une vue d’inscription avec une structure prédéfinie :

  • Barre latérale gauche qui affiche une liste des tâches d’inscription
  • Zone de contenu principal qui affiche le contenu d’une étape d’inscription donnée

La liste des tâches d’inscription est spécifiée sous la forme d’un tableau d’éléments TaskListItemProps. Vous pouvez entièrement personnaliser le contenu de l’étape d’inscription en spécifiant une vue React personnalisée comme enfant direct de <OnboardingView>. Cette méthode vous permet de mettre en œuvre une étape d’inscription personnalisée en fonction des besoins de votre entreprise, tandis que le Dashboard Stripe contrôle l’affichage de la liste des tâches d’inscription.

Propriétés OnboardingView

PropriétéType

children

Obligatoire

React.ReactNode

Composant React qui affiche le contenu de la colonne principale.

completed

Obligatoire

boolean

Lorsque cette option est définie sur vrai, la fenêtre modale d’intégration se fermera automatiquement après un bref délai pour ramener l’utilisateur à son emplacement précédent.

tasks

Obligatoire

Array<Tasks>

Liste des tâches d’inscription.

Types associés : Tasks.

title

Obligatoire

string

Titre de l’étape d’inscription.

description

Facultatif

string | undefined

Description de l’étape d’inscription.

error

Facultatif

React.ReactNode

Affiche le message d’erreur du processus d’inscription des utilisateurs, le cas échéant.

pending

Facultatif

boolean | undefined

Indique si le flux d’inscription est en état de chargement. Affiche un indicateur de chargement et le message associé si c’est le cas.

Tâches

PropriétéType

title

Obligatoire

string

Le titre affiché de la tâche.

onPress

Facultatif

((event: PressEvent) => void) | undefined

Un gestionnaire d’événements pour quand l’utilisateur clique n’importe où dans la tâche.

status

Facultatif

("not-started" | "in-progress" | "blocked" | "complete") | undefined

L’état actuel de la tâche.

subTasks

Facultatif

Array<SubTasks> | undefined

Liste des sous-tâches qui appartiennent à cette tâche.

Types associés : SubTasks.

SubTasks

PropriétéType

title

Obligatoire

string

Le titre affiché de la tâche.

onPress

Facultatif

((event: PressEvent) => void) | undefined

Un gestionnaire d’événements pour quand l’utilisateur clique n’importe où dans la tâche.

status

Facultatif

("not-started" | "in-progress" | "blocked" | "complete") | undefined

L’état actuel de la tâche.

Basic

L’exemple suivant illustre l’utilisation de base du composant OnboardingView, dans lequel une vue React différente est obtenue pour chaque étape de l’inscription.

Chargement de l'exemple...
import React, {useState, useReducer, useCallback} from 'react'; import { FormFieldGroup, TextField, OnboardingView, Switch, TaskListItemProps, } from '@stripe/ui-extension-sdk/ui'; const onboardingTasks: Record<TaskName, TaskListItemProps> = { addInfo: { title: 'Add business info', status: 'in-progress', onPress: () => handlePress('addInfo'), }, connectBank: { title: 'Connect your bank', status: 'not-started', onPress: () => handlePress('connectBank'), }, review: { title: 'Review and finish', status: 'not-started', onPress: () => handlePress('review'), }, }; // These view implement the UI required by a particular onboarding step const steps: Record<TaskName, React.FunctionComponent> = { addInfo: () => ( <FormFieldGroup legend="Business Info" description="Add business info"> <TextField label="Company name" placeholder="Company name" hiddenElements={['label']} /> </FormFieldGroup> ), connectBank: () => ( <FormFieldGroup legend="Connect your bank" description="Enter the bank account to which withdrawals will be sent." > <TextField label="Bank name" placeholder="Bank name" hiddenElements={['label']} /> </FormFieldGroup> ), review: () => ( <FormFieldGroup legend="Specify settings" layout="vertical"> <Switch label="Enable automatic transfers" description="Enable automatic transfers" /> <Switch label="Enable auto-import of transactions" description="Enable auto-import of transactions" /> </FormFieldGroup> ), }; const handlePress = useCallback((taskName: TaskName) => { setTaskName(taskName); dispatch({type: 'TOGGLE_STATUS', taskName}); }, []); const [taskName, setTaskName] = useState<TaskName>('addInfo'); const [tasks, dispatch] = useReducer(taskReducer, onboardingTasks); const taskListItems = Object.values(tasks); const title = tasks[taskName].title; const description = `Please complete the onboarding step.`; const completed = taskListItems.every((item) => item.status === 'complete'); const OnboardingViewContent = steps[taskName]; return ( <OnboardingView title={title} description={description} completed={completed} tasks={taskListItems} > <OnboardingViewContent /> </OnboardingView> ); function getNextStatus( status: string, ): 'not-started' | 'in-progress' | 'complete' { switch (status) { case 'complete': return 'not-started'; case 'not-started': return 'in-progress'; case 'in-progress': return 'complete'; default: return 'not-started'; } } type TaskName = 'addInfo' | 'connectBank' | 'review'; type TaskAction = { type: 'TOGGLE_STATUS'; taskName: TaskName; }; // Reducer function to handle state updates function taskReducer( state: Record<TaskName, TaskListItemProps>, action: TaskAction, ): Record<TaskName, TaskListItemProps> { switch (action.type) { case 'TOGGLE_STATUS': return { ...state, [action.taskName]: { ...state[action.taskName], status: getNextStatus(state[action.taskName].status as string), }, }; default: return state; } }

Transitoire

Cet exemple montre comment utiliser les propriétéserror ou pending pour gérer différents états pendant le flux d’inscription des utilisateurs.

Le composant gère trois états distincts :

  • En attente : affiche un spinner de chargement lors de la récupération des données d’inscription
  • Erreur : affiche un bouton Réessayer si la récupération échoue
  • Prêt : affiche l’expérience d’inscription des utilisateurs normale avec les tâches et les formulaires

Lorsque l’exemple de composant se charge pour la première fois, il simule un échec de récupération pour démontrer l’état de l’erreur. Lorsque vous cliquez sur Réessayer, la récupération réussit et affiche le contenu réel de l’inscription. Cette approche vous permet de gérer en douceur les scénarios de chargement et d’erreur sans nécessiter de composants supplémentaires ni de gestion complexe des états.

Chargement de l'exemple...
import React, {useCallback, useEffect, useState} from 'react'; import { FormFieldGroup, TextField, Button, OnboardingView, TaskListItemProps, } from '@stripe/ui-extension-sdk/ui'; type OnboardingData = { state: 'pending' | 'error' | 'ready'; tasks: TaskListItemProps[]; }; const [onboarding, setOnboarding] = useState<OnboardingData>({ state: 'pending', tasks: [], }); const fetchTasks = useCallback( (() => { let isFirstTry = true; return () => { setOnboarding({state: 'pending', tasks: []}); setTimeout(() => { if (isFirstTry) { isFirstTry = false; setOnboarding((prev) => ({...prev, state: 'error'})); } else { setOnboarding({ state: 'ready', tasks: [ {title: 'Add business info', status: 'in-progress'}, {title: 'Connect your bank', status: 'not-started'}, {title: 'Review and finish', status: 'not-started'}, ], }); } }, 2000); }; })(), [], ); useEffect(fetchTasks, [fetchTasks]); const error = onboarding.state === 'error' ? ( <Button onPress={fetchTasks}>Try again!</Button> ) : null; const pending = onboarding.state === 'pending'; return ( <OnboardingView error={error} pending={pending} title="Onboarding title" description="Onboarding description" completed={false} tasks={onboarding.tasks} > <FormFieldGroup legend="Business Info" description="Add business info!"> <TextField label="Company name" placeholder="Company name" hiddenElements={['label']} /> </FormFieldGroup> </OnboardingView> )

Voir aussi

  • Modèles de conception
  • Styliser votre application
  • Tests d’interface utilisateur
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc