跳到主要内容
版本:v7

添加到现有 React 项目

本指南介绍如何将 Ionic React 添加到现有的 React 项目中。如果您想从头开始创建一个新项目,请查看 Ionic React 快速入门指南。要了解 Ionic React 如何与 React 配合使用的概览(包括版本支持和工具),请查看 Ionic React 概览

提示

本指南使用 TypeScript 示例。如果您使用的是 JavaScript,设置过程相同,但需要使用 .jsx 文件扩展名代替 .tsx

设置

信息

本指南遵循使用 Vite 创建的 React 应用结构。如果您使用其他工具(如 Create React App)创建 React 应用,文件结构和设置可能会有所不同。

按照以下步骤将 Ionic React 添加到现有 React 项目:

1. 安装包

npm install @ionic/react

2. 配置 Ionic React

更新 src/App.tsx,包含 setupIonicReact 并导入所需的 Ionic Framework 样式表:

src/App.tsx
// ...现有导入...

import { setupIonicReact } from '@ionic/react';

/* Ionic 组件正常工作所需的核心 CSS */
import '@ionic/react/css/core.css';

/* 使用 Ionic 构建的应用的基本 CSS */
import '@ionic/react/css/normalize.css';
import '@ionic/react/css/structure.css';
import '@ionic/react/css/typography.css';

setupIonicReact();

// ...现有应用函数和导出...

setupIonicReact 是一个用于设置 Ionic React 组件以与您的应用配合使用的函数。在使用任何 Ionic React 组件之前,需要调用它。

信息

虽然 core.css 是必需的,但 normalize.cssstructure.csstypography.css 是推荐但非必需的。它们可以规范化跨浏览器的差异,确保正确的滚动行为,并提供一致的排版和表单样式。如果没有它们,您可能需要自己处理这些问题。有关更多详情,请参阅全局样式表

使用单个组件

完成上述设置后,您可以在现有 React 应用中开始使用 Ionic 组件。以下是一个如何使用它们的示例:

src/App.tsx 更新为以下内容:

src/App.tsx
import { IonButton, IonDatetime, setupIonicReact } from '@ionic/react';
import './App.css';

/* Ionic 组件正常工作所需的核心 CSS */
import '@ionic/react/css/core.css';

/* 使用 Ionic 构建的应用的基本 CSS */
import '@ionic/react/css/normalize.css';
import '@ionic/react/css/structure.css';
import '@ionic/react/css/typography.css';

setupIonicReact();

const App: React.FC = () => (
<>
<IonButton>按钮</IonButton>
<IonDatetime></IonDatetime>
</>
);

export default App;

请访问组件页面查看所有可用的 Ionic 组件。

提示

如果您的现有 React 应用在 src/main.tsx 中导入了全局样式表(如 index.css),您可能需要移除它或更新与 Ionic Framework 组件冲突的样式。Ionic Framework 包含自己的 CSS 重置和规范化,可能与现有的全局样式冲突。

使用 Ionic 页面

如果您想使用带有完整导航和页面过渡效果的 Ionic 页面,请按照以下额外设置步骤操作。

1. 添加额外的 Ionic Framework 样式表

更新 src/App.tsx 中导入的样式表:

src/App.tsx
/* Ionic 组件正常工作所需的核心 CSS */
import '@ionic/react/css/core.css';

/* 使用 Ionic 构建的应用的基本 CSS */
import '@ionic/react/css/normalize.css';
import '@ionic/react/css/structure.css';
import '@ionic/react/css/typography.css';

/* 可选的 CSS 工具,可以根据需要注释掉 */
import '@ionic/react/css/padding.css';
import '@ionic/react/css/float-elements.css';
import '@ionic/react/css/text-alignment.css';
import '@ionic/react/css/text-transformation.css';
import '@ionic/react/css/flex-utils.css';
import '@ionic/react/css/display.css';

这些样式表设置了整体页面结构并提供了CSS 工具以加快开发速度。某些样式表是可选的。关于哪些样式表是必需的,请查看全局样式表

2. 设置主题

创建一个包含以下内容的 src/theme/variables.css 文件:

src/theme/variables.css
/* 有关如何创建自定义主题的信息,请参考:
https://ionicframework.com/docs/theming/ */

然后,在 src/App.tsx 中导入该文件和深色主题样式表:

src/App.tsx
// ...现有导入...

// ...现有样式表...

/**
* Ionic 暗色模式
* -----------------------------------------------------
* 更多信息,请参考:
* https://ionicframework.com/docs/theming/dark-mode
*/

/* @import '@ionic/react/css/palettes/dark.always.css'; */
/* @import '@ionic/react/css/palettes/dark.class.css'; */
import '@ionic/react/css/palettes/dark.system.css';

/* 主题变量 */
import './theme/variables.css';

setupIonicReact();

// ...现有应用函数和导出...

variables.css 文件可用于创建自定义的 Ionic Framework 主题。dark.system.css 导入使得当系统设置为偏好暗色外观时,为您的 Ionic 应用启用暗色模式支持。您可以通过取消注释不同的暗色主题导入或将自定义 CSS 变量添加到 theme/variables.css 来自定义主题行为。

3. 更新应用组件

src/App.tsx 更新为以下内容:

src/App.tsx
import { IonApp, IonRouterOutlet, setupIonicReact } from '@ionic/react';
import { IonReactRouter } from '@ionic/react-router';

/* Ionic 组件正常工作所需的核心 CSS */
import '@ionic/react/css/core.css';

/* 使用 Ionic 构建的应用的基本 CSS */
import '@ionic/react/css/normalize.css';
import '@ionic/react/css/structure.css';
import '@ionic/react/css/typography.css';

/* 可选的 CSS 工具,可以根据需要注释掉 */
import '@ionic/react/css/padding.css';
import '@ionic/react/css/float-elements.css';
import '@ionic/react/css/text-alignment.css';
import '@ionic/react/css/text-transformation.css';
import '@ionic/react/css/flex-utils.css';
import '@ionic/react/css/display.css';

/**
* Ionic 暗色模式
* -----------------------------------------------------
* 更多信息,请参考:
* https://ionicframework.com/docs/theming/dark-mode
*/

/* @import '@ionic/react/css/palettes/dark.always.css'; */
/* @import '@ionic/react/css/palettes/dark.class.css'; */
import '@ionic/react/css/palettes/dark.system.css';

/* 主题变量 */
import './theme/variables.css';

setupIonicReact();

const App = () => {
return (
<IonApp>
<IonReactRouter>
<IonRouterOutlet>{/* 路由将在此处添加 */}</IonRouterOutlet>
</IonReactRouter>
</IonApp>
);
};

export default App;

4. 创建首页

src/pages/Home.tsx 中创建新文件,内容如下:

src/pages/Home.tsx
import { IonContent, IonHeader, IonPage, IonTitle, IonToolbar } from '@ionic/react';

import './Home.css';

const Home = () => {
return (
<IonPage>
<IonHeader translucent={true}>
<IonToolbar>
<IonTitle>首页</IonTitle>
</IonToolbar>
</IonHeader>

<IonContent fullscreen={true}>
<IonHeader collapse="condense">
<IonToolbar>
<IonTitle size="large">首页</IonTitle>
</IonToolbar>
</IonHeader>

<div id="container">
<strong>准备好创建应用了吗?</strong>
<p>
从 Ionic{' '}
<a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">
UI 组件
</a>
开始
</p>
</div>
</IonContent>
</IonPage>
);
};

export default Home;

然后,创建 src/pages/Home.css

src/pages/Home.css
#container {
text-align: center;

position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}

#container strong {
font-size: 20px;
line-height: 26px;
}

#container p {
font-size: 16px;
line-height: 22px;

color: #8c8c8c;

margin: 0;
}

#container a {
text-decoration: none;
}

5. 设置路由

important

Ionic React Router 目前只支持 React Router v5。您必须安装以下特定版本的路由器包才能使用 Ionic React 设置路由。

安装路由器包:

npm install @ionic/react-router react-router@5 react-router-dom@5
npm install @types/react-router-dom --save-dev

然后,更新 src/App.tsx 以添加首页的路由:

src/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';

// ...现有的 Ionic Framework 样式表导入...

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 React 应用现已配置了完整的 Ionic 页面支持。运行 npm run dev 启动开发服务器并查看您的应用。

后续步骤

现在您已将 Ionic React 集成到项目中,请查看:

导航

了解如何使用 React Router 在 Ionic React 应用中处理路由和导航。

组件

探索 Ionic 丰富的 UI 组件库,用于构建精美的应用。

主题

了解如何使用 Ionic 强大的主题系统自定义应用的外观和风格。

Capacitor 文档

探索如何使用原生设备功能,并通过 Capacitor 将应用部署到 iOS、Android 和 Web。