跳过内容

Getting Started

GitHub

您可以使用我们的 AI 助手来安装插件。使用以下命令将 Capgo 技能添加到您的 AI 工具中:

终端窗口
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

然后使用以下提示:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-transitions` plugin in my project.

如果您更喜欢手动设置,请运行以下命令安装插件并按照以下平台特定的说明进行操作:

  1. 安装包

    终端窗口
    npm install @capgo/capacitor-transitions
  2. 注册 Web 组件

    import '@capgo/capacitor-transitions';
  3. 包装路由页面

    <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. 在路由器改变路由之前设置方向

    import { setDirection } from '@capgo/capacitor-transitions/react';
    setDirection('forward');
    router.push('/message/42');
    setDirection('back');
    router.back();

React设置

React设置
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>
);
}

React JSX TypeScript

React JSX TypeScript

从中导入 @capgo/capacitor-transitions/react 包括JSX类型定义 cap-router-outlet, cap-page, cap-header, cap-contentcap-footer。在大多数React项目中,导入使自定义元素在TSX中自动有效。

如果TypeScript仍然报告 Property 'cap-router-outlet' does not exist on type 'JSX.IntrinsicElements'添加一个项目声明文件:

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

对于 Vite、Create React App 和大多数 webpack React 应用程序,仅将该文件放在 src/ 中即可。对于 Next.js,放在 src/ 或项目根目录,并确保 tsconfig.json 包含它:

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

对于自定义 TypeScript 或 webpack 设置,使用单独的 types/ 文件夹,包含该文件夹:

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

从标记中启用或禁用 iOS 边缘手势:

<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>

或从 JavaScript:

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

auto 仅在 Capacitor 报告本机 iOS 运行时时启用手势。在手势期间,页面转换跟随手指。当用户释放时,转换要么完成并要求浏览器历史记录向后移动,要么取消并恢复当前页面。

为了防止元素开始手势,请添加 data-swipe-gesture-ignore:

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

Section titled “使用本机导航”

使用

with @capgo/capacitor-transitions 本机导航 @capgo/native-navigation 当原生应该拥有顶部和底部导航栏,而网页内容保持Ionic样式的页面运动。

  1. 安装并同步原生导航包:

    终端窗口
    npm install @capgo/native-navigation
    npx cap sync
  2. 配置原生浏览器:

    import { NativeNavigation } from '@capgo/native-navigation';
    await NativeNavigation.configure({
    contentInsetMode: 'css',
    });
    await NativeNavigation.setNavbar({
    title: 'Inbox',
    backButton: { visible: false },
    });
  3. 只让web过渡出口负责页面:

    <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. 从同一个路由事件驱动两种系统:

    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' },
    });
    }

不要再次渲染原生顶部导航栏作为移动的: <cap-header>. 让 @capgo/native-navigation bar保持原生状态并使用 @capgo/capacitor-transitions 为WebView页面内容

<cap-router-outlet>

标题:<cap-router-outlet>
属性类型默认值描述
platform'ios' | 'android' | 'auto''auto'动画样式
durationnumber平台默认值动画持续时间(毫秒)
keep-in-dombooleantrue保持不活动页面在 DOM 中
max-cachednumber10最大缓存页面
swipe-gestureboolean | 'auto''auto'启用、禁用或原生检测 iOS 边缘手势

方法:

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

包裹一个页面并发射生命周期事件:

  • cap-will-enter
  • cap-did-enter
  • cap-will-leave
  • cap-did-leave
属性类型默认值描述
fullscreenbooleanfalse让内容滚动在头部后面
scroll-xbooleantrue启用水平滚动
scroll-ybooleantrue启用垂直滚动

框架辅助工具

框架辅助工具

框架入口点暴露相同的核心辅助函数:

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 });

可用入口点:

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

继续从开始使用

继续从开始使用

如果您正在使用 开始使用 规划迁移和企业运营,连接它 使用@capgo/capacitor-transitions 使用@capgo/capacitor-transitions中的本地能力 Capgo企业 在Capgo企业中的产品工作流 Ionic企业插件替代品 在Ionic企业插件替代品中的产品工作流 Capgo替代品 在Capgo替代品中的产品工作流 Capgo咨询 在Capgo咨询中的产品工作流