


Benutzertouren sind ein unschätzbar wertvolles Usability-Feature für Webanwendungen. Sie ermöglichen Ihnen die effektive Einbindung neuer Benutzer und bieten Schritt-für-Schritt-Anleitungen, die ihnen helfen, die Software zu verstehen. Touren können auch als Kurzreferenz für wiederkehrende Aufgaben oder erweiterte Funktionen dienen.
Das Ziel: Cross-Page-Tour-Lösung
Unser Ziel ist es, eine Lösung zu schaffen, die es Ihnen ermöglicht, ein Onboarding-Erlebnis zu schaffen, das sich über mehrere Seiten in der React-Anwendung erstreckt. So sieht es aus:
Ant Design Tour: Eine lokale Lösung
Ant Design bietet eine Tour-Komponente zum Erstellen interaktiver Reiseführer. Es gibt jedoch einige Einschränkungen:
- Es funktioniert lokal innerhalb einer einzelnen Komponente.
- Es ist stark auf React-Refs angewiesen, was es weniger flexibel für Anwendungen macht, die sich über mehrere Seiten erstrecken.
Hier ist ein Beispiel aus der offiziellen Dokumentation, das eine grundlegende lokale Implementierung demonstriert:
import React, { useRef, useState } from 'react'; import { EllipsisOutlined } from '@ant-design/icons'; import { Button, Divider, Space, Tour } from 'antd'; const App = () => { const ref1 = useRef(null); const ref2 = useRef(null); const ref3 = useRef(null); const [open, setOpen] = useState(false); const steps = [ { title: 'Upload File', description: 'Put your files here.', target: () => ref1.current }, { title: 'Save', description: 'Save your changes.', target: () => ref2.current }, { title: 'Other Actions', description: 'Click to see other actions.', target: () => ref3.current }, ]; return ( <button type="primary" onclick="{()"> setOpen(true)}>Begin Tour</button> <divider></divider> <space> <button ref="{ref1}">Upload</button> <button ref="{ref2}" type="primary">Save</button> <button ref="{ref3}" icon="{<EllipsisOutlined"></button>} /> </space> <tour open="{open}" onclose="{()"> setOpen(false)} steps={steps} /> > ); }; export default App; </tour>
Während diese Implementierung für einzelne Seiten gut funktioniert, ist sie in Szenarien, in denen sich Touren über Seiten in Ihrer React-Anwendung erstrecken, unzureichend.
So setzen wir das um:
Vorschritte, app.jsx, Routen.jsx, RoutenNames.js:
import { RouterProvider } from "react-router-dom"; import AppRouter from "./routes"; export default function App() { return <routerprovider router="{AppRouter}"></routerprovider>; }
export const ROUTE_NAMES = { HOME: "/", ABOUT: "/about", };
import AppLayout from "./AppLayout"; import { createBrowserRouter } from "react-router-dom"; import { ROUTE_NAMES } from "./routeNames"; import { Home } from "./components/Home"; import { About } from "./components/About"; import { Result } from "antd"; import {TourProvider} from "./TourContext"; const GetItem = (label, key, icon, to, children = [], type) => { return !to ? { key, icon, children, label, type, } : { key, icon, to, label, }; }; const GetRoute = (path, element, params = null) => { return { path, element, }; }; const WithAppLayout = (Component) => <tourprovider><applayout>{Component}</applayout></tourprovider>; export const routeItems = [ GetItem("Home", "home", null, ROUTE_NAMES.HOME), GetItem("About", "about", null, ROUTE_NAMES.ABOUT), ]; const AppRouter = createBrowserRouter([ GetRoute(ROUTE_NAMES.HOME, WithAppLayout(<home></home>)), GetRoute(ROUTE_NAMES.ABOUT, WithAppLayout(<about></about>)), GetRoute( "*", <result status="404" title="404" subtitle="Sorry, the page you visited does not exist."></result> ), ]); export default AppRouter;
Schritt 1: Richten Sie einen globalen Tourkontext ein
Wir verwenden React Context, um den globalen Status der Tour zu verwalten, einschließlich der aktiven Tourschritte.
import React, { createContext, useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { APP_TOURS } from "./steps"; const TourContext = createContext(); export const TourProvider = ({ children }) => { const [isTourActive, setTourActive] = useState(false); const navigate = useNavigate(); useEffect(() => { if (isTourActive) { navigate("/home"); // Redirect to the starting point of the tour } }, [isTourActive, navigate]); return ( <tourcontext.provider value="{{" istouractive settouractive steps: app_tours> {children} </tourcontext.provider> ); }; export default TourContext;
Schritt 2: Definieren Sie globale Tourschritte
Anstelle von React-Refs verwenden wir querySelector, um Elemente dynamisch über ein benutzerdefiniertes data-tour-id-Attribut abzurufen.
const getTourStepElement = (id) => document.querySelector(`[data-tour-id="${id}"]`); export const APP_TOURS = { "/home": [ { title: "Upload File", description: "Put your files here.", target: () => getTourStepElement("upload") }, { title: "Save", description: "Save your changes.", target: () => getTourStepElement("save") }, { type: "navigate", to: "/about", title: "About Us", description: "Learn more about us." }, ], "/about": [ { title: "About Us", description: "Here's what we are all about.", target: () => getTourStepElement("about") }, ], };
Schritt 3: Erstellen Sie eine globale Tourkomponente
Diese Komponente verwaltet dynamisch die Navigation und Schritte über Seiten hinweg.
import React, { useContext } from "react"; import { Tour } from "antd"; import { useNavigate } from "react-router-dom"; import TourContext from "./TourContext"; export const GlobalTour = () => { const { isTourActive, steps, setTourActive } = useContext(TourContext); const navigate = useNavigate(); return ( <tour open="{isTourActive}" onclose="{()"> setTourActive(false)} steps={steps} onChange={(current) => { const step = steps[current]; if (step.type === "navigate") { navigate(step.to); } }} /> ); }; </tour>
Schritt 4: In das App-Layout integrieren
Die Tour ist nahtlos in das Layout integriert und von jeder Seite aus zugänglich.
import React, { useContext } from "react"; import { Layout, Button } from "antd"; import { Link } from "react-router-dom"; import TourContext from "./TourContext"; import { GlobalTour } from "./GlobalTour"; const { Header, Content, Footer } = Layout; const AppLayout = ({ children }) => { const { setTourActive } = useContext(TourContext); return ( <layout> <header> <link to="/home">Home <link to="/about">About <button onclick="{()"> setTourActive(true)}>Start Tour</button> </header> <content>{children}</content> <footer>© {new Date().getFullYear()} My App</footer> <globaltour></globaltour> </layout> ); }; export default AppLayout;
Schritt 5: Schritt-Tour-IDs hinzufügen
Da sich unsere Tour über mehrere Seiten erstreckt, weisen wir jeder Komponente, die wir in unseren Schritten hervorheben möchten, eine Datentour-ID zu.
import { Button, Space } from "antd"; import { EllipsisOutlined } from "@ant-design/icons"; export const Home = () => { return ( <button data-tour-id="upload">Upload</button> <button data-tour-id="save" type="primary"> Save </button> <button data-tour-id="actions" icon="{<EllipsisOutlined"></button>} /> > ); };
export const About = () => { return <div data-tour-id="about">About</div>; };
Das obige ist der detaillierte Inhalt vonEntwerfen und Implementieren der Ant Design Global App Tour für React Apps.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

10 Fun JQuery Game -Plugins, um Ihre Website attraktiver zu machen und die Stickinität der Benutzer zu verbessern! Während Flash immer noch die beste Software für die Entwicklung von lässigen Webspielen ist, kann JQuery auch überraschende Effekte erzielen und zwar nicht mit reinen Action -Flash -Spielen vergleichbar sind, aber in einigen Fällen können Sie auch einen unerwarteten Spaß in Ihrem Browser haben. JQuery Tic Toe Game Die "Hello World" der Game -Programmierung hat jetzt eine Jquery -Version. Quellcode JQuery Crazy Word Kompositionsspiel Dies ist ein Spiel mit der Füllung, und es kann einige seltsame Ergebnisse erzielen, da das Wort nicht kennt. Quellcode JQuery Mine Sweeping Game

Dieses Tutorial zeigt, wie ein faszinierender Parallaxen -Hintergrundeffekt mit JQuery erstellt wird. Wir werden ein Header -Banner mit geschichteten Bildern bauen, die eine atemberaubende visuelle Tiefe erzeugen. Das aktualisierte Plugin funktioniert mit JQuery 1.6.4 und später. Laden Sie die herunter

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Matter.js ist eine in JavaScript geschriebene 2D -Motorhilfe -Physik -Engine. Diese Bibliothek kann Ihnen helfen, die 2D -Physik in Ihrem Browser problemlos zu simulieren. Es bietet viele Merkmale, wie die Möglichkeit, starre Körper zu erstellen und physikalische Eigenschaften wie Masse, Fläche oder Dichte zuzuweisen. Sie können auch verschiedene Arten von Kollisionen und Kräften simulieren, wie z. B. die Schwerkraft Reibung. Matter.js unterstützt alle Mainstream -Browser. Darüber hinaus ist es für mobile Geräte geeignet, da es Berührungen erkennt und reagiert. Alle diese Funktionen machen es Ihre Zeit wert, zu lernen, wie man die Engine benutzt. In diesem Tutorial werde ich die Grundlagen dieser Bibliothek, einschließlich ihrer Installation und Nutzung, behandeln und a bereitstellen

Dieser Artikel zeigt, wie Sie den Inhalt eines DIV automatisch alle 5 Sekunden mit JQuery und Ajax aktualisieren können. Das Beispiel holt und zeigt die neuesten Blog -Beiträge aus einem RSS -Feed zusammen mit dem letzten Aktualisierungstempel. Ein Ladebild ist Optiona


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver CS6
Visuelle Webentwicklungstools

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools