Si une image vaut mille mots, alors une démo interactive doit valoir ... un million?
Aimez-vous faire défiler les mots à la mode pour comprendre le but d'une application? Probablement pas. Et je ne me souciais pas d'écrire tout ce blather pour mon dernier projet passionné, Wanna. J'ai donc poursuivi une solution plus intéressante: nid mon application dans sa propre page de destination pour que les utilisateurs puissent explorer!
Grâce à la composabilité de React, nous pouvons presque Rendez simplement notre composant d'application racine et l'appelez un jour:
export const InteractiveDemo = () => { return () }
Cependant, vous rencontrerez quelques problèmes:
résolvons-les. Je veux utiliser React Router V6 et Apollo GraphQL, mais les concepts s'appliquent quelle que soit la technologie.
Pour séparer la navigation de l'application de démon
import { MemoryRouter, UNSAFE_LocationContext } from 'react-router' export const InteractiveDemo = () => { return ( // Hack to nest MemoryRouter inside BrowserRouter. // https://github.com/remix-run/react-router/issues/7375Remarque Nous utilisons un MemoryRouter pour que le navigateur reste sur la même page tandis que la démo navigue en interne.) }
Données
J'ai utilisé Mock-Apollo-Client; Pour le repos ou TRPC, vous pouvez utiliser quelque chose comme Nock. Ils sont destinés aux tests automatisés mais sont exactement ce dont nous avons besoin ici.
Premièrement, nous créons un simulé client dont les gestionnaires de demande interrogent et mutent des données de démonstration d'une manière qui imite le vrai backend:
import { MemoryRouter, UNSAFE_LocationContext } from 'react-router' export const InteractiveDemo = () => { return ( // Hack to nest MemoryRouter inside BrowserRouter. // https://github.com/remix-run/react-router/issues/7375Ensuite, tout comme nous l'avons fait avec la navigation, nous enroulons notre démo dans un nouveau fournisseur avec notre simule client:) }
import { MemoryRouter, UNSAFE_LocationContext } from 'react-router' export const InteractiveDemo = () => { return ( // Hack to nest MemoryRouter inside BrowserRouter. // https://github.com/remix-run/react-router/issues/7375Si vous avez plutôt utilisé un simulation de serveur, vous injecteriez son URL dans le vrai client de l'application de démonstration.) }
Visuels
Je veux est mobile d'abord, j'ai donc choisi de rendre la démo dans un cadre téléphonique. J'ai utilisé des dispositifs.css car il offre les appareils que je pensais être le mieux (c'est-à-dire une lunette minimale pour maximiser l'espace de démonstration). Mais pour simplifier, nous utiliserons ici une bibliothèque qui prend en charge React hors de la boîte: React-Device-FrameSet.
utilisons également Zoom pour rétrécir l'interface utilisateur de démonstration et le nid bien dans le reste de la page. Dans Wanna, j'ai dû inverser et rendre compte de ce zoom lors de l'utilisation de
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3