Je suis un peu nouveau dans React et j'essaie de faire un mécanisme de balayage de carte.
J'utilise cette bibliothèque:
https://www.npmjs.com/package/react-swipe-card
J'ai essentiellement un composant de démonstration créé:
onEnd={action('end')
Cependant, je ne suis pas très familier avec les livres d'histoires - j'en ai lu et cela n'a pas vraiment de sens pour moi.
Par exemple, une fois que toutes les cartes ont été traitées, j'aimerais les mélanger et les afficher à nouveau.
À l'heure actuelle, la seule «action» qui est exécutée est «fin», quoi que cela fasse:
import React, { Component } from 'react' import Cards, { Card } from 'react-swipe-card'; import { action } from '@storybook/addon-actions'; import addons, { mockChannel } from '@storybook/addons'; addons.setChannel(mockChannel()); const data = ['Alexandre', 'Thomas', 'Lucien'] const Wrapper = () => { return ( <Cards onEnd={action('end')} className='master-root'> {data.map(item => <Card key={item} onSwipeRight={action('swipe left')} onSwipeLeft={action('swipe left')} > <h2>{item}</h2> </Card> )} </Cards> ) } export default Wrapper;
Quel est cet appel de fin d'action exactement? Comment pourrais-je repeupler les cartes à la fin?
Désolé si c'est une question basique, honnêtement, je ne l'aurais pas posée si je n'avais pas essayé de comprendre des livres d'histoires pendant quelques jours d'abord.
3 Réponses :
Vous devez écrire les histoires! https://www.learnstorybook.com/react/en/simple-component/
Cependant, si vous ne voulez pas utiliser de livre d'histoires et faire fonctionner votre carte, appelez simplement les fonctions spécifiques onSwipeLeft, onSwipeRight
En fait, l' action('end')
est juste un gestionnaire d'action (ainsi qu'une action('swipe left')
ou action('swipe right')
) qui est appelée sur un événement spécifique ( onEnd
). Jetez un œil à https://alexandre-garrec.github.io/react-swipe-card/ et à ACTION LOGGER
en pied de page.
La documentation (très pauvre) ne donne aucune idée de ce que fait exactement onEnd
dans cette bibliothèque, mais, comme je peux le voir dans le code source, cette fonction (si elle est passée comme accessoire) est appelée lors du retrait d'une carte si le compteur de cartes supprimées est égal au nombre total de cartes ( https://github.com/alexandre-garrec/react-swipe-card/blob/master/src/Cards.js , ligne 23). Je pense que cela est destiné à faire qc quand toutes les cartes ont été glissées, par exemple montrer une alerte ou autre.
Si je vous ai bien compris, aucune méthode de réinitialisation n'est disponible (à ce jour) pour ce composant. Toutes les fonctionnalités disponibles sont fournies sous forme de démo ici: https://github.com/alexandre-garrec/react-swipe-card/blob/master/stories/index.js
Dans une application réelle (pas dans des histoires), vous pouvez toujours essayer de mettre les données utilisées pour rendre les cartes dans l'état du composant, et de les réinitialiser quand vous le souhaitez (par exemple, appelez sa réinitialisation via onClick
sur un bouton).
Ok, comme Jack l'aurait dit, allons-y par parties. Tout d'abord:
Je voudrais une explication sur le fonctionnement des actions de livre de contes
storybook-actions
est un addon à la plateforme de Storybook. Les actions vous fournissent un mécanisme qui enregistre les interactions et les données des utilisateurs au fur et à mesure qu'elles transitent par vos composants dans l'interface utilisateur du Storybook. action()
est en fait une high-order function
qui renvoie une autre fonction similaire à console.log()
, la seule différence ici est qu'en plus de console.log()
l'activité de l'utilisateur et d'effectuer d'autres opérations, le nom de l'action (end, swipe-left, ...) sera également affiché sur le panneau d'action de votre livre de contes.
Les fonctions de gestionnaire d'événements créées par
action()
sont utiles pour remplacer les fonctions de gestionnaire d'événements réelles que vous passeriez à vos composants. D'autres fois, vous avez réellement besoin du comportement de gestion des événements pour s'exécuter. Par exemple, vous avez un champ de formulaire contrôlé qui conserve son propre état et vous voulez voir ce qui se passe lorsque l'état change
Consultez cet article sur les actions
pour plus d'informations
Seconde:
Une réponse parfaite expliquerait comment faire répéter les cartes après qu'un utilisateur ait fini de parcourir une pile
Cela n'a en fait rien à voir avec des actions ou même avec un livre d'histoires, cette logique est implémentée par le package react-swipe-card
, et ici j'avoue mon incompétence, j'ai même essayé de passer par la source, mais c'est tellement désordonné que Il est presque impossible de comprendre exactement ce qui se passe, la logique que vous recherchez n'est qu'un carousel
, qui vérifie si l'élément suivant est null
ou undefined
et si la casse est vraie tout recommencer. Ou si l'élément précédent est null
ou undefined
et que la casse est vraie, passez au dernier élément. Je vous conseille de trouver une autre bibliothèque plus fiable comme les react-swipeable-views
Comprenez-vous pourquoi un livre d'histoires est nécessaire?
@DehandeCroos - Je ne le fais pas, même si je lis les explications maintenant.
Pour ce faire, supprimez complètement le livre de contes de votre projet pour le moment. Puisque vous êtes nouveau dans React, cela vous déroutera. Storybooks est un outil de gestion de l'interface utilisateur que vous ne livrez pas à vos clients. Il vise à garder votre équipe synchronisée avec le style d'interface utilisateur que vous êtes censé suivre.