进阶 reactnative.dev 2026-10-11 06:04:21 · 33 阅读
第13章 AppRegistry - React Native 官方文档
版本:0.77
AppRegistry
需要原生代码
如果您使用托管 Expo 工作流,则只有主组件会注册到 AppRegistry,且该过程是自动处理的(或通过 registerRootComponent 实现)。您无需使用此 API。
AppRegistry 是运行所有 React Native 应用的 JS 入口点。App 根组件应通过 AppRegistry.registerComponent 自行注册,随后原生系统即可加载应用的 bundle,并在准备就绪时通过调用 AppRegistry.runApplication 实际运行应用。
React TSX
import {Text, AppRegistry} from 'react-native';
const App = () => (
App1
);
AppRegistry.registerComponent('Appname', () => App);
当视图需要销毁以“停止”应用时,请调用 AppRegistry.unmountApplicationComponentAtRootTag,并传入传递给 runApplication 的 tag。这两个方法应始终成对使用。 AppRegistry 应在 require 序列的早期阶段加载,以确保在 require 其他模块之前,JS 执行环境已设置完毕。 参考 方法 getAppKeys() React TSX static getAppKeys(): string[];
返回字符串数组。 getRegistry() React TSX static getRegistry(): {sections: string[]; runnables: Runnable[]};
返回 Registry 对象。 getRunnable() React TSX static getRunnable(appKey: string): : Runnable | undefined;
返回 Runnable 对象。 参数: 名称 类型 appKey (必需) string getSectionKeys() React TSX static getSectionKeys(): string[];
返回字符串数组。 getSections() React TSX static getSections(): Record;
返回 Runnables 对象。 registerCancellableHeadlessTask() React TSX static registerCancellableHeadlessTask(
taskKey: string,
taskProvider: TaskProvider,
taskCancelProvider: TaskCancelProvider,
);
注册可取消的无头任务。无头任务是一段没有 UI 的代码。 参数: 名称 类型 描述 taskKey (必需) string 调用 startHeadlessTask 时用于此任务实例的原生 id。 taskProvider (必需) TaskProvider 一个返回 Promise 的函数,接收来自原生侧的数据作为唯一参数。当 Promise 被解析或拒绝时,原生侧会收到通知,并可能据此决定销毁 JS 上下文。 taskCancel 翻译后的内容: RequiredTaskCancelProvidera 接收无参数并返回 void 的函数。当请求取消时,由 taskProvider 执行的函数应尽快收尾并返回。 registerComponent() React TSX static registerComponent( appKey: string, getComponentFunc: ComponentProvider, section?: boolean, ): string; 参数: 名称 类型 appKey Required string componentProvider Required ComponentProvider section boolean registerConfig() React TSX static registerConfig(config: AppConfig[]); 参数: 名称 类型 config Required AppConfig[] registerHeadlessTask() React TSX static registerHeadlessTask( taskKey: string, taskProvider: TaskProvider, ); 注册一个无头任务。无头任务是指在没有 UI 的情况下运行的代码片段。 这种方式允许在应用处于后台时执行 JavaScript 任务。例如,可用于同步最新数据、处理推送通知或播放音乐。 参数: 名称 类型 描述 taskKey Required string 调用 startHeadlessTask 时使用的该任务实例的原生 ID。 taskProvider Required TaskProvider 一个返回 Promise 的函数,接收来自原生端传递的数据作为唯一参数。当 Promise 解决或被拒绝时,原生端会收到通知,并可能决定销毁 JS 上下文。 registerRunnable() React TSX static registerRunnable(appKey: string, func: Runnable): string; 参数: 名称 类型 appKey Required string run Required function registerSection() React TSX static registerSection( appKey: string, component: ComponentProvider, ); 参数: 名称 类型 appKey Required string component Required ComponentProvider runApplication() React TSX static runApplication(appKey: string, appParameters: any): void; 加载 JavaScript bundle 并运行应用。 参数: 名称 类型 appKey Required string appParameters Required any setComponentProviderInstrumentationHook() React TSX static setComponentProviderInstrumentationHook( hook: ComponentProviderInstrumentationHook, ); 参数: 名称 类型 hook Required function 有效的 hook 函数接受以下参数: 名称 类型 component Required ComponentProvider scopedPerformanceLogger Required IPerformanceLogger 该函数必须返回一个 React Component。 setWrapperComponentProvider() React TSX static setWrapperComponentProvider( provider: WrapperComponentProvider, ); 参数: 名称类型provider 必填ComponentProvider startHeadlessTask() React TSXstatic startHeadlessTask(
taskId: number,
taskKey: string,
data: any,
);
仅由原生代码调用,用于启动一个 headless 任务。 参数: 名称类型描述taskId 必填number此任务实例的原生 id,用于跟踪其执行情况。taskKey 必填string要启动的任务的 key。data 必填any传给任务的数据。 unmountApplicationComponentAtRootTag() React TSXstatic unmountApplicationComponentAtRootTag(rootTag: number);
当某个视图需要销毁时,停止应用。 参数: 名称类型rootTag 必填number 类型定义 AppConfig registerConfig 方法使用的应用配置。 类型object 属性: 名称类型appKey 必填stringcomponentComponentProviderrunfunctionsectionboolean 注意:每个配置必须设置 component 或 run 函数中的至少一个。 Registry 类型object 属性: 名称类型runnablesRunnable 数组sections字符串数组 Runnable 类型object 属性: 名称类型componentComponentProviderrunfunction Runnables 一个以 appKey 为键、以 Runnable 为值的对象。 类型object Task Task 是一个函数,接受任意数据作为参数,返回一个 resolve 为 undefined 的 Promise。 类型function TaskCanceller TaskCanceller 是一个不接受任何参数、返回 void 的函数。 类型function TaskCancelProvider 合法的 TaskCancelProvider 是一个返回 TaskCanceller 的函数。 类型function TaskProvider 合法的 TaskProvider 是一个返回 Task 的函数。 类型function
const App = () => (
);
AppRegistry.registerComponent('Appname', () => App);
当视图需要销毁以“停止”应用时,请调用 AppRegistry.unmountApplicationComponentAtRootTag,并传入传递给 runApplication 的 tag。这两个方法应始终成对使用。 AppRegistry 应在 require 序列的早期阶段加载,以确保在 require 其他模块之前,JS 执行环境已设置完毕。 参考 方法 getAppKeys() React TSX static getAppKeys(): string[];
返回字符串数组。 getRegistry() React TSX static getRegistry(): {sections: string[]; runnables: Runnable[]};
返回 Registry 对象。 getRunnable() React TSX static getRunnable(appKey: string): : Runnable | undefined;
返回 Runnable 对象。 参数: 名称 类型 appKey (必需) string getSectionKeys() React TSX static getSectionKeys(): string[];
返回字符串数组。 getSections() React TSX static getSections(): Record
返回 Runnables 对象。 registerCancellableHeadlessTask() React TSX static registerCancellableHeadlessTask(
taskKey: string,
taskProvider: TaskProvider,
taskCancelProvider: TaskCancelProvider,
);
注册可取消的无头任务。无头任务是一段没有 UI 的代码。 参数: 名称 类型 描述 taskKey (必需) string 调用 startHeadlessTask 时用于此任务实例的原生 id。 taskProvider (必需) TaskProvider 一个返回 Promise 的函数,接收来自原生侧的数据作为唯一参数。当 Promise 被解析或拒绝时,原生侧会收到通知,并可能据此决定销毁 JS 上下文。 taskCancel 翻译后的内容: RequiredTaskCancelProvidera 接收无参数并返回 void 的函数。当请求取消时,由 taskProvider 执行的函数应尽快收尾并返回。 registerComponent() React TSX static registerComponent( appKey: string, getComponentFunc: ComponentProvider, section?: boolean, ): string; 参数: 名称 类型 appKey Required string componentProvider Required ComponentProvider section boolean registerConfig() React TSX static registerConfig(config: AppConfig[]); 参数: 名称 类型 config Required AppConfig[] registerHeadlessTask() React TSX static registerHeadlessTask( taskKey: string, taskProvider: TaskProvider, ); 注册一个无头任务。无头任务是指在没有 UI 的情况下运行的代码片段。 这种方式允许在应用处于后台时执行 JavaScript 任务。例如,可用于同步最新数据、处理推送通知或播放音乐。 参数: 名称 类型 描述 taskKey Required string 调用 startHeadlessTask 时使用的该任务实例的原生 ID。 taskProvider Required TaskProvider 一个返回 Promise 的函数,接收来自原生端传递的数据作为唯一参数。当 Promise 解决或被拒绝时,原生端会收到通知,并可能决定销毁 JS 上下文。 registerRunnable() React TSX static registerRunnable(appKey: string, func: Runnable): string; 参数: 名称 类型 appKey Required string run Required function registerSection() React TSX static registerSection( appKey: string, component: ComponentProvider, ); 参数: 名称 类型 appKey Required string component Required ComponentProvider runApplication() React TSX static runApplication(appKey: string, appParameters: any): void; 加载 JavaScript bundle 并运行应用。 参数: 名称 类型 appKey Required string appParameters Required any setComponentProviderInstrumentationHook() React TSX static setComponentProviderInstrumentationHook( hook: ComponentProviderInstrumentationHook, ); 参数: 名称 类型 hook Required function 有效的 hook 函数接受以下参数: 名称 类型 component Required ComponentProvider scopedPerformanceLogger Required IPerformanceLogger 该函数必须返回一个 React Component。 setWrapperComponentProvider() React TSX static setWrapperComponentProvider( provider: WrapperComponentProvider, ); 参数: 名称类型provider 必填ComponentProvider startHeadlessTask() React TSXstatic startHeadlessTask(
taskId: number,
taskKey: string,
data: any,
);
仅由原生代码调用,用于启动一个 headless 任务。 参数: 名称类型描述taskId 必填number此任务实例的原生 id,用于跟踪其执行情况。taskKey 必填string要启动的任务的 key。data 必填any传给任务的数据。 unmountApplicationComponentAtRootTag() React TSXstatic unmountApplicationComponentAtRootTag(rootTag: number);
当某个视图需要销毁时,停止应用。 参数: 名称类型rootTag 必填number 类型定义 AppConfig registerConfig 方法使用的应用配置。 类型object 属性: 名称类型appKey 必填stringcomponentComponentProviderrunfunctionsectionboolean 注意:每个配置必须设置 component 或 run 函数中的至少一个。 Registry 类型object 属性: 名称类型runnablesRunnable 数组sections字符串数组 Runnable 类型object 属性: 名称类型componentComponentProviderrunfunction Runnables 一个以 appKey 为键、以 Runnable 为值的对象。 类型object Task Task 是一个函数,接受任意数据作为参数,返回一个 resolve 为 undefined 的 Promise。 类型function TaskCanceller TaskCanceller 是一个不接受任何参数、返回 void 的函数。 类型function TaskCancelProvider 合法的 TaskCancelProvider 是一个返回 TaskCanceller 的函数。 类型function TaskProvider 合法的 TaskProvider 是一个返回 Task 的函数。 类型function