配置
Ionic 配置提供了一种方法,可以在整个应用程序中全局更改组件的属性。它可以设置应用程序模式、选项卡按钮布局、动画等等。
全局配置
可以在 IonicConfig
接口中找到可用的配置键。
以下示例禁用波纹效果并将默认模式设置为 Material Design
- JavaScript
- Angular
- Angular (独立)
- React
- Vue
window.Ionic = {
config: {
rippleEffect: false,
mode: 'md',
},
};
import { IonicModule } from '@ionic/angular';
@NgModule({
...
imports: [
IonicModule.forRoot({
rippleEffect: false,
mode: 'md'
})
],
...
})
import { provideIonicAngular } from '@ionic/angular/standalone';
bootstrapApplication(AppComponent, {
providers: [
...,
provideIonicAngular({
rippleEffect: false,
mode: 'md'
})
]
})
setupIonicReact
函数必须在呈现任何 Ionic 组件(包括 IonApp
)之前调用。
import { setupIonicReact } from '@ionic/react';
setupIonicReact({
rippleEffect: false,
mode: 'md',
});
import { IonicVue } from '@ionic/vue';
import { createApp } from 'vue';
createApp(App).use(IonicVue, {
rippleEffect: false,
mode: 'md',
});
每个组件配置
Ionic 配置不是响应式的。在组件呈现后更新配置的值会导致使用先前值。如果需要响应式值,建议使用组件的属性而不是更新配置。
- JavaScript
- Angular
- Angular (独立)
- React
- Vue
不建议
window.Ionic = {
config: {
// Not recommended when your app requires reactive values
backButtonText: 'Go Back',
},
};
建议
<ion-back-button></ion-back-button>
<script>
const backButton = document.querySelector('ion-back-button');
/**
* The back button text can be updated
* anytime the locale changes.
*/
backButton.text = 'Go Back';
</script>
不建议
import { IonicModule } from '@ionic/angular';
@NgModule({
...
imports: [
IonicModule.forRoot({
// Not recommended when your app requires reactive values
backButtonText: 'Go Back'
})
],
...
});
建议
<ion-back-button [text]="backButtonText"></ion-back-button>
@Component(...)
class MyComponent {
/**
* The back button text can be updated
* anytime the locale changes.
*/
backButtonText = 'Go Back';
}
不建议
import { provideIonicAngular } from '@ionic/angular/standalone';
bootstrapApplication(AppComponent, {
providers: [
...,
provideIonicAngular({
// Not recommended when your app requires reactive values
backButtonText: 'Go Back'
})
]
})
建议
<ion-back-button [text]="backButtonText"></ion-back-button>
@Component(...)
class MyComponent {
/**
* The back button text can be updated
* anytime the locale changes.
*/
backButtonText = 'Go Back';
}
不建议
import { setupIonicReact } from '@ionic/react';
setupIonicReact({
// Not recommended when your app requires reactive values
backButtonText: 'Go Back',
});
建议
import { useState } from 'react';
import { IonBackButton } from '@ionic/react';
const ExampleComponent = () => {
const [backButtonText, setBackButtonText] = useState('Go Back');
return (
{/*
* The back button text can be updated
* anytime the locale changes.
*/}
<IonBackButton text={backButtonText}></IonBackButton>
)
}
不建议
import { IonicVue } from '@ionic/vue';
import { createApp } from 'vue';
// Not recommended when your app requires reactive values
createApp(App).use(IonicVue, {
backButtonText: 'Go Back',
});
建议
<template>
<ion-back-button [text]="backButtonText"></ion-back-button>
</template>
<script setup lang="ts">
import { IonBackButton } from '@ionic/vue';
import { ref } from 'vue';
/**
* The back button text can be updated
* anytime the locale changes.
*/
const backButtonText = ref('Go Back');
</script>
每个平台配置
Ionic 配置也可以在每个平台的基础上进行设置。例如,这允许您在应用程序在可能较慢的设备的浏览器中运行时禁用动画。开发人员可以利用 Platform 实用程序来实现这一点。
在以下示例中,我们仅在应用程序在移动 Web 浏览器中运行时才在 Ionic 应用程序中禁用所有动画。
- Angular
- Angular (独立)
- React
- Vue
由于配置是在运行时设置的,因此您将无法访问 Platform 依赖注入。相反,您可以直接使用提供程序使用的底层函数。
查看 Angular 平台文档 以了解您可以检测到的平台类型。
import { isPlatform, IonicModule } from '@ionic/angular';
@NgModule({
...
imports: [
IonicModule.forRoot({
animated: !isPlatform('mobileweb')
})
],
...
})
由于配置是在运行时设置的,因此您将无法访问 Platform 依赖注入。相反,您可以直接使用提供程序使用的底层函数。
查看 Angular 平台文档 以了解您可以检测到的平台类型。
import { isPlatform, provideIonicAngular } from '@ionic/angular/standalone';
bootstrapApplication(AppComponent, {
providers: [
...,
provideIonicAngular({
animated: !isPlatform('mobileweb')
})
]
})
查看 React 平台文档 以了解您可以检测到的平台类型。
import { isPlatform, setupIonicReact } from '@ionic/react';
setupIonicReact({
animated: !isPlatform('mobileweb'),
});
查看 Vue 平台文档 以了解您可以检测到的平台类型。
import { IonicVue, isPlatform } from '@ionic/vue';
createApp(App).use(IonicVue, {
animated: !isPlatform('mobileweb'),
});
回退
以下示例允许您根据平台设置完全不同的配置,如果没有任何平台匹配,则回退到默认配置
- Angular
- Angular (独立)
- React
- Vue
import { isPlatform, IonicModule } from '@ionic/angular';
const getConfig = () => {
let config = {
animated: false
};
if (isPlatform('iphone')) {
config = {
...config,
backButtonText: 'Previous'
}
}
return config;
}
@NgModule({
...
imports: [
IonicModule.forRoot(getConfig())
],
...
});
import { isPlatform, provideIonicAngular } from '@ionic/angular/standalone';
const getConfig = () => {
let config = {
animated: false
};
if (isPlatform('iphone')) {
config = {
...config,
backButtonText: 'Previous'
}
}
return config;
}
bootstrapApplication(AppComponent, {
providers: [
...,
provideIonicAngular(getConfig())
]
})
import { isPlatform, setupIonicReact } from '@ionic/react';
const getConfig = () => {
let config = {
animated: false,
};
if (isPlatform('iphone')) {
config = {
...config,
backButtonText: 'Previous',
};
}
return config;
};
setupIonicReact(getConfig());
import { IonicVue, isPlatform } from '@ionic/vue';
const getConfig = () => {
let config = {
animated: false,
};
if (isPlatform('iphone')) {
config = {
...config,
backButtonText: 'Previous',
};
}
return config;
};
createApp(App).use(IonicVue, getConfig());
覆盖
此最终示例允许您根据不同的平台要求累积配置对象。
- Angular
- Angular (独立)
- React
- Vue
import { isPlatform, IonicModule } from '@ionic/angular';
const getConfig = () => {
if (isPlatform('hybrid')) {
return {
tabButtonLayout: 'label-hide'
}
}
return {
tabButtonLayout: 'icon-top'
};
}
@NgModule({
...
imports: [
IonicModule.forRoot(getConfig())
],
...
});
import { isPlatform, provideIonicAngular } from '@ionic/angular/standalone';
const getConfig = () => {
if (isPlatform('hybrid')) {
return {
tabButtonLayout: 'label-hide'
}
}
return {
tabButtonLayout: 'icon-top'
};
}
bootstrapApplication(AppComponent, {
providers: [
...,
provideIonicAngular(getConfig())
]
})
import { isPlatform, setupIonicReact } from '@ionic/react';
const getConfig = () => {
if (isPlatform('hybrid')) {
return {
tabButtonLayout: 'label-hide',
};
}
return {
tabButtonLayout: 'icon-top',
};
};
setupIonicReact(getConfig());
import { IonicVue, isPlatform } from '@ionic/vue';
const getConfig = () => {
if (isPlatform('hybrid')) {
return {
tabButtonLayout: 'label-hide',
};
}
return {
tabButtonLayout: 'icon-top',
};
};
createApp(App).use(IonicVue, getConfig());
读取配置 (Angular)
Ionic Angular 提供了一个 Config
提供程序来访问 Ionic 配置。
get
描述 | 将配置值作为 any 返回。如果配置未定义,则返回 null 。 |
签名 | get(key: string, fallback?: any) => any |
示例
- Angular
- Angular (独立)
import { Config } from '@ionic/angular';
@Component(...)
class AppComponent {
constructor(config: Config) {
const mode = config.get('mode');
}
}
import { Config } from '@ionic/angular/standalone';
@Component(...)
class AppComponent {
constructor(config: Config) {
const mode = config.get('mode');
}
}
getBoolean
描述 | 将配置值作为 boolean 返回。如果配置未定义,则返回 false 。 |
签名 | getBoolean(key: string, fallback?: boolean) => boolean |
示例
- Angular
- Angular (独立)
import { Config } from '@ionic/angular';
@Component(...)
class AppComponent {
constructor(config: Config) {
const swipeBackEnabled = config.getBoolean('swipeBackEnabled');
}
}
import { Config } from '@ionic/angular/standalone';
@Component(...)
class AppComponent {
constructor(config: Config) {
const swipeBackEnabled = config.getBoolean('swipeBackEnabled');
}
}
getNumber
描述 | 将配置值作为 number 返回。如果配置未定义,则返回 0 。 |
签名 | getNumber(key: string, fallback?: number) => number |
接口
IonicConfig
以下是 Ionic 使用的配置选项。
配置 | 类型 | 描述 |
---|---|---|
actionSheetEnter | AnimationBuilder | 为所有 ion-action-sheet 提供自定义进入动画,覆盖默认的 "animation"。 |
actionSheetLeave | AnimationBuilder | 为所有 ion-action-sheet 提供自定义离开动画,覆盖默认的 "animation"。 |
alertEnter | AnimationBuilder | 为所有 ion-alert 提供自定义进入动画,覆盖默认的 "animation"。 |
alertLeave | AnimationBuilder | 为所有 ion-alert 提供自定义离开动画,覆盖默认的 "animation"。 |
animated | boolean | 如果为 true ,Ionic 将在整个应用程序中启用所有动画和过渡。 |
backButtonDefaultHref | string | 覆盖所有 <ion-back-button> 组件中 defaultHref 属性的默认值。 |
backButtonIcon | string | 覆盖所有 <ion-back-button> 组件中的默认图标。 |
backButtonText | string | 覆盖所有 <ion-back-button> 组件中的默认文本。 |
innerHTMLTemplatesEnabled | boolean | 相关组件:ion-alert 、ion-infinite-scroll-content 、ion-loading 、ion-refresher-content 、ion-toast 。如果为 true ,传递给相关组件的内容将被解析为 HTML 而不是纯文本。默认为 false 。 |
hardwareBackButton | boolean | 如果为 true ,Ionic 将响应 Android 设备中的硬件返回按钮。 |
infiniteLoadingSpinner | SpinnerTypes | 覆盖所有 <ion-infinite-scroll-content> 组件中的默认微调器类型。 |
loadingEnter | AnimationBuilder | 为所有 ion-loading 提供自定义进入动画,覆盖默认的 "animation"。 |
loadingLeave | AnimationBuilder | 为所有 ion-loading 提供自定义离开动画,覆盖默认的 "animation"。 |
loadingSpinner | SpinnerTypes | 覆盖所有 ion-loading 覆盖层中的默认微调器。 |
menuIcon | string | 覆盖所有 <ion-menu-button> 组件中的默认图标。 |
menuType | string | 覆盖所有 <ion-menu> 组件中的默认菜单类型。 |
modalEnter | AnimationBuilder | 为所有 ion-modal 提供自定义进入动画,覆盖默认的 "animation"。 |
modalLeave | AnimationBuilder | 为所有 ion-modal 提供自定义离开动画,覆盖默认的 "animation"。 |
mode | Mode | 模式决定了为整个应用程序使用哪些平台样式。 |
navAnimation | AnimationBuilder | 覆盖整个应用程序中所有 ion-nav 和 ion-router-outlet 的默认 "animation"。 |
pickerEnter | AnimationBuilder | 为所有 ion-picker 提供自定义进入动画,覆盖默认的 "animation"。 |
pickerLeave | AnimationBuilder | 为所有 ion-picker 提供自定义离开动画,覆盖默认的 "animation"。 |
platform | PlatformConfig | 覆盖默认的平台检测方法。 |
popoverEnter | AnimationBuilder | 为所有 ion-popover 提供自定义进入动画,覆盖默认的 "animation"。 |
popoverLeave | AnimationBuilder | 为所有 ion-popover 提供自定义离开动画,覆盖默认的 "animation"。 |
refreshingIcon | string | 覆盖所有 <ion-refresh-content> 组件中的默认图标。 |
refreshingSpinner | SpinnerTypes | 覆盖所有 <ion-refresh-content> 组件中的默认微调器类型。 |
rippleEffect | boolean | 如果为 true ,将整个应用程序中启用 Material Design 波纹效果。 |
sanitizerEnabled | boolean | 如果为 true ,Ionic 将在接受自定义 HTML 的组件属性上启用基本的 DOM 净化器。 |
spinner | SpinnerTypes | 覆盖所有 <ion-spinner> 组件中的默认微调器。 |
statusTap | boolean | 如果为 true ,点击或轻触状态栏将导致内容滚动到顶部。 |
swipeBackEnabled | boolean | 如果设置为 true ,Ionic 将在整个应用程序中启用“滑动返回”手势。 |
tabButtonLayout | TabButtonLayout | 覆盖整个应用程序中所有 ion-bar-button 的默认“布局”。 |
toastDuration | 数字 | 覆盖所有 ion-toast 组件的默认 duration 。 |
toastEnter | AnimationBuilder | 为所有 ion-toast 提供自定义进入动画,覆盖默认的“动画”。 |
toastLeave | AnimationBuilder | 为所有 ion-toast 提供自定义离开动画,覆盖默认的“动画”。 |
toggleOnOffLabels | boolean | 覆盖所有 ion-toggle 组件中的默认 enableOnOffLabels 。 |
experimentalCloseWatcher | boolean | 实验性:如果设置为 true ,则将使用 CloseWatcher API 来处理所有 Escape 键和硬件后退按钮按下以关闭菜单和覆盖层以及进行导航。请注意,hardwareBackButton 配置选项也必须设置为 true 。 |
focusManagerPriority | FocusManagerPriority[] | 实验性:定义后,Ionic 将在每次页面转换后将焦点移动到相应的元素。这确保了依赖辅助技术的用户在页面转换发生时得到通知。默认情况下禁用。 |