Saltare al contenuto

Copia le opzioni della pagina

  1. Installa il pacchetto

    Finestra del terminale
    npm install @capgo/capacitor-transitions
  2. Registra i componenti web

    import '@capgo/capacitor-transitions';
  3. Avvolgi le pagine di routing

    <cap-router-outlet platform="auto" swipe-gesture="auto">
    <cap-page>
    <cap-header slot="header">
    <h1>Inbox</h1>
    </cap-header>
    <cap-content slot="content">
    <button>Open message</button>
    </cap-content>
    <cap-footer slot="footer">
    <nav>Tabs</nav>
    </cap-footer>
    </cap-page>
    </cap-router-outlet>
  4. Assicurati di impostare la direzione prima che il tuo router cambi rotta

    import { setDirection } from '@capgo/capacitor-transitions/react';
    setDirection('forward');
    router.push('/message/42');
    setDirection('back');
    router.back();
import { useEffect, useRef } from 'react';
import { useNavigate } from 'react-router-dom';
import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';
import '@capgo/capacitor-transitions';
initTransitions({ platform: 'auto' });
export function AppShell() {
const outletRef = useRef<HTMLElement>(null);
useEffect(() => {
if (!outletRef.current) return;
setupRouterOutlet(outletRef.current, {
platform: 'auto',
swipeGesture: 'auto',
});
}, []);
return (
<cap-router-outlet ref={outletRef}>
{/* Your router renders cap-page children here. */}
</cap-router-outlet>
);
}
export function InboxPage() {
const navigate = useNavigate();
const pageRef = useRef<HTMLElement>(null);
useEffect(() => {
if (!pageRef.current) return;
return setupPage(pageRef.current, {
onDidEnter: () => console.log('Inbox visible'),
});
}, []);
return (
<cap-page ref={pageRef}>
<cap-header slot="header">
<h1>Inbox</h1>
</cap-header>
<cap-content slot="content">
<button
onClick={() => {
setDirection('forward');
navigate('/message/42');
}}
>
Open message
</button>
</cap-content>
</cap-page>
);
}

Importazione da @capgo/capacitor-transitions/react include JSX tipizzazioni per cap-router-outlet, cap-page, cap-header, cap-content, e cap-footer. In quasi tutti i progetti React, quella importazione rende gli elementi personalizzati validi in TSX automaticamente.

Se TypeScript segnala ancora Property 'cap-router-outlet' does not exist on type 'JSX.IntrinsicElements', aggiungi un file di dichiarazione del progetto:

src/capgo-transizioni.d.ts
import '@capgo/capacitor-transitions/react';

Per Vite, Create React App e la maggior parte degli app React webpack, posizionare quel file dentro src/ è sufficiente. Per Next.js, mettilo in src/ o nella radice del progetto e assicurati che tsconfig.json lo includa:

{
"include": ["src", "src/capgo-transitions.d.ts"]
}

For impostazioni TypeScript o webpack personalizzate che utilizzano una cartella separata, includere quella cartella al posto di: types/ Copia nel portapannino

{
"include": ["src", "types"]
}

Sottosezione intitolata “Torna indietro”

Abilita o disabilita il gesto di bordo iOS da markup:

Copia nel portapannino

<cap-router-outlet swipe-gesture="auto"></cap-router-outlet>
<cap-router-outlet swipe-gesture="true"></cap-router-outlet>
<cap-router-outlet swipe-gesture="false"></cap-router-outlet>

Copia nel portapannino

const outlet = document.querySelector('cap-router-outlet');
outlet?.setSwipeGesture('auto');
outlet?.setSwipeGesture(true);
outlet?.setSwipeGesture(false);

auto enables the gesture only when Capacitor reports a native iOS runtime. During the gesture, the page transition follows the finger. When the user releases, the transition either completes and asks the browser history to go back, or cancels and restores the current page.

Copia nel portapannino data-swipe-gesture-ignore:

<button data-swipe-gesture-ignore>Open drawer</button>

Usa @capgo/capacitor-transitions con @capgo/native-navigation quando la navigazione nativa deve gestire le barre superiore e inferiore mentre il contenuto web mantiene la movimentazione delle pagine di stile Ionic.

  1. Installa e sincronizza il pacchetto di navigazione nativa:

    Finestra del terminale
    npm install @capgo/native-navigation
    npx cap sync
  2. Configura il chrome nativo:

    import { NativeNavigation } from '@capgo/native-navigation';
    await NativeNavigation.configure({
    contentInsetMode: 'css',
    });
    await NativeNavigation.setNavbar({
    title: 'Inbox',
    backButton: { visible: false },
    });
  3. Mantieni responsabile della transizione web l'uscita per le pagine solo:

    <cap-router-outlet platform="auto" swipe-gesture="auto">
    <cap-page>
    <cap-content slot="content" fullscreen>
    <main class="native-page">Inbox content</main>
    </cap-content>
    </cap-page>
    </cap-router-outlet>
    .native-page {
    padding-top: var(--cap-native-navigation-top);
    padding-bottom: var(--cap-native-navigation-bottom);
    }
  4. Gestisci entrambi i sistemi con gli stessi eventi del router:

    import { NativeNavigation } from '@capgo/native-navigation';
    import { setDirection } from '@capgo/capacitor-transitions/react';
    import { router } from './router';
    await NativeNavigation.addListener('navbarBack', () => {
    setDirection('back');
    router.back();
    });
    async function openMessage(id: string) {
    setDirection('forward');
    router.push(`/message/${id}`);
    await NativeNavigation.setNavbar({
    title: 'Message',
    backButton: { visible: true, title: 'Inbox' },
    });
    }

Non rendere la barra superiore nativa nuovamente come un movimento <cap-header>. Lascia @capgo/native-navigation mantieni la barra nativa e utilizza @capgo/capacitor-transitions per il contenuto della pagina WebView sottostante.

AttributoTipoDefaultDescrizione
platform'ios' | 'android' | 'auto''auto'Stile di animazione
durationnumberPredefinito del sistemaDurata dell'animazione in millisecondi
keep-in-dombooleantrueConserva pagine inattive nel DOM
max-cachednumber10Pagine cache massime
swipe-gestureboolean | 'auto''auto'Abilita, disabilita o rileva il gesto di bordo iOS

Metodi:

  • push(element, config?)
  • pop(config?)
  • setRoot(element, config?)
  • setSwipeGesture(true | false | 'auto')

Rende una pagina e emette eventi di ciclo di vita:

  • cap-will-enter
  • cap-did-enter
  • cap-will-leave
  • cap-did-leave
AttributoTipoPredefinitoDescrizione
fullscreenbooleanfalseLascia che il contenuto scorra dietro l'intestazione
scroll-xbooleantrueAbilita lo scorrimento orizzontale
scroll-ybooleantrueAbilita lo scorrimento verticale

Gli entrypoint del framework espongono gli stessi aiuti core:

import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';
initTransitions({ platform: 'auto' });
setDirection('forward');
setupRouterOutlet(element, { platform: 'auto', swipeGesture: 'auto' });
setupPage(element, { onWillEnter, onDidEnter, onWillLeave, onDidLeave });

Disponibili gli entrypoint:

  • @capgo/capacitor-transitions/react
  • @capgo/capacitor-transitions/vue
  • @capgo/capacitor-transitions/angular
  • @capgo/capacitor-transitions/svelte
  • @capgo/capacitor-transitions/solid

Se stai utilizzando Getting Started per pianificare la migrazione e le operazioni aziendali, connettilo con Utilizzando @capgo/capacitor-transizioni per la capacità nativa in Utilizzando @capgo/capacitor-transizioni Capgo Azienda per il flusso di lavoro del prodotto in Capgo Azienda Alternative per Plugin di Enterprise di Ionic per il flusso di lavoro del prodotto in Alternative per Plugin di Enterprise di Ionic Capgo Alternative per il flusso di lavoro del prodotto in Capgo Alternatives, e Capgo Consulting per il flusso di lavoro del prodotto in Capgo Consulting.