Ionic React 快速入门
欢迎!本指南将带您了解 Ionic React 开发的基础知识。您将学习如何设置开发环境、生成简单项目、探索项目结构,以及理解 Ionic 组件的工作方式。这是在构建第一个实际应用之前熟悉 Ionic React 的绝佳方式。
如果您想了解 Ionic React 的概况以及它如何融入 React 生态系统,请参阅 Ionic React 概览。
前提条件
开始之前,请确保您的机器上已安装 Node.js 和 npm。 您可以通过运行以下命令来检查:
node -v
npm -v
如果您还没有安装 Node.js 和 npm,请在此下载 Node.js(包含 npm)。
使用 Ionic CLI 创建项目
首先,安装最新的 Ionic CLI:
npm install -g @ionic/cli
然后,运行以下命令来创建并运行一个新项目:
ionic start myApp blank --type react
cd myApp
ionic serve
运行 ionic serve 后,您的项目将在浏览器中打开。

探索项目结构
您的新应用的目录结构如下所示:
└── src/
├── App.tsx
├── components
│ ├── ExploreContainer.css
│ └── ExploreContainer.tsx
├── main.tsx
└── pages
├── Home.css
└── Home.tsx
以下示例中的所有文件路径都是相对于项目根目录的。
让我们逐一了解这些文件,以理解应用的结构。
查看应用组件
应用的根组件定义在 App.tsx 中:
import { Redirect, Route } from 'react-router-dom';
import { IonApp, IonRouterOutlet, setupIonicReact } from '@ionic/react';
import { IonReactRouter } from '@ionic/react-router';
import Home from './pages/Home';
// ..CSS 导入...
setupIonicReact();
const App: React.FC = () => (
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route exact path="/home">
<Home />
</Route>
<Route exact path="/">
<Redirect to="/home" />
</Route>
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
);
export default App;
这设置了应用的根组件,使用了 Ionic 的 IonApp 和 IonReactRouter 组件。IonRouterOutlet 是页面显示的地方。
查看路由
路由定义在 App.tsx 的 IonRouterOutlet 中:
<IonRouterOutlet>
<Route exact path="/home">
<Home />
</Route>
<Route exact path="/">
<Redirect to="/home" />
</Route>
</IonRouterOutlet>
当您访问根 URL(/)时,将加载 Home 组件。
查看首页
首页组件定义在 Home.tsx 中,导入 Ionic 组件并定义了页面模板:
import { IonContent, IonHeader, IonPage, IonTitle, IonToolbar } from '@ionic/react';
import ExploreContainer from '../components/ExploreContainer';
import './Home.css';
const Home: React.FC = () => {
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>Blank</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent fullscreen>
<IonHeader collapse="condense">
<IonToolbar>
<IonTitle size="large">Blank</IonTitle>
</IonToolbar>
</IonHeader>
<ExploreContainer />
</IonContent>
</IonPage>
);
};
export default Home;
这将创建一个包含头部和可滚动内容区域的页面。IonPage 组件提供了基本的页面结构,每个页面上都必须使用。第二个头部展示了可折叠大标题,当内容滚动到顶部时显示,向下滚动时会折叠为第一个头部中的较小标题。
添加 Ionic 组件
您可以使用更多 Ionic UI 组件来增强首页。例如,在 Home.tsx 的 IonContent 末尾导入并添加一个 Button:
import { IonButton, IonContent, IonHeader, IonPage, IonTitle, IonToolbar } from '@ionic/react';
// ...现有导入...
const Home: React.FC = () => {
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>Blank</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent fullscreen>
{/* ...现有内容... */}
<IonButton>导航</IonButton>
</IonContent>
</IonPage>
);
};
export default Home;
添加新页面
在 New.tsx 中创建新页面:
import { IonBackButton, IonButtons, IonContent, IonHeader, IonPage, IonTitle, IonToolbar } from '@ionic/react';
const New: React.FC = () => {
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonButtons slot="start">
<IonBackButton defaultHref="/"></IonBackButton>
</IonButtons>
<IonTitle>New</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent fullscreen>
<IonHeader collapse="condense">
<IonToolbar>
<IonTitle size="large">New</IonTitle>
</IonToolbar>
</IonHeader>
</IonContent>
</IonPage>
);
};
export default New;
这将创建一个在 Toolbar 中包含返回按钮的页面。返回按钮会自动处理导航回上一页,如果没有历史记录则导航到 /。
创建自己的页面时,始终使用 IonPage 作为根组件。这对于页面之间的正确过渡、Ionic 组件依赖的基础 CSS 样式以及应用中一致的布局行为至关重要。
导航到新页面
要导航到新页面,首先在 App.tsx 顶部 Home 导入之后导入它,为其创建路由:
import New from './pages/New';
然后,在 IonRouterOutlet 中添加其路由:
<IonRouterOutlet>
<Route exact path="/home">
<Home />
</Route>
<Route exact path="/new">
<New />
</Route>
<Route exact path="/">
<Redirect to="/home" />
</Route>
</IonRouterOutlet>
完成后,更新 Home.tsx 中的按钮:
<IonButton routerLink="/new">导航</IonButton>
也可以使用 React Router 的 history prop 以编程方式进行导航。有关更多信息,请参阅 React 导航文档。
为新页面添加图标
Ionic React 预装了 Ionicons。您可以通过设置 IonIcon 组件的 icon 属性来使用任何图标。
更新 New.tsx 的导入,导入 IonIcon 以及 heart 和 logoIonic 图标:
import { IonBackButton, IonButtons, IonContent, IonHeader, IonIcon, IonPage, IonTitle, IonToolbar } from '@ionic/react';
import { heart, logoIonic } from 'ionicons/icons';
然后,将它们放在 IonContent 内部:
<IonIcon icon={heart} />
<IonIcon icon={logoIonic} />
请注意,我们传递的是导入的 SVG 引用,而不是图标名称字符串。
有关更多信息,请参阅图标文档和 Ionicons 文档。
调用组件方法
让我们添加一个可以滚动内容区域到底部的按钮。
更新 New.tsx,在现有图标之后添加 IonContent 上的 ref、一个按钮和一些项目:
<IonContent ref={content}>
<IonIcon icon={heart} />
<IonIcon icon={logoIonic} />
<IonButton onClick={scrollToBottom}>滚动到底部</IonButton>
{/* 添加大量内容以实现滚动 */}
{Array.from({ length: 50 }, (_, i) => (
<IonItem key={i}>
<IonLabel>项目 {i + 1}</IonLabel>
</IonItem>
))}
</IonContent>
然后,添加额外组件的导入并定义 scrollToBottom 函数:
import { useRef } from 'react';
import { IonButton, IonBackButton, IonButtons, IonContent, IonHeader, IonIcon, IonItem, IonLabel, IonPage, IonTitle, IonToolbar } from '@ionic/react';
import { heart, logoIonic } from 'ionicons/icons';
const New: React.FC = () => {
const content = useRef<HTMLIonContentElement>(null);
const scrollToBottom = () => {
content.current?.scrollToBottom(300);
};
return (
// ...现有模板...
);
};
export default New;