跳到主要内容

附录

I. 术语

  • Spec - 描述 Turbo Native Module 或 Fabric Native 组件 API 的 TypeScript 或 Flow 代码。由 Codegen 用于生成样板代码。

  • Native Modules - 没有面向用户的用户界面(UI)的原生库。例如持久化存储、通知、网络事件。这些可作为函数和对象供你的 JavaScript 应用代码访问。

  • Native Component - 可通过 React 组件供你的应用 JavaScript 代码使用的原生平台视图。

  • Legacy Native Components - 运行在旧版 React Native 架构上的组件。

  • Legacy Native Modules - 运行在旧版 React Native 架构上的模块。

II. Codegen 类型

你可以将以下表格作为参考,了解支持哪些类型,以及它们在各个平台上的映射方式:

FlowTypeScriptFlow Nullable 支持TypeScript Nullable 支持Android (Java)iOS (ObjC)
stringstring?stringstring | nullstringNSString
booleanboolean?booleanboolean | nullBooleanNSNumber
Object Literal
{| foo: string, ...|}
{ foo: string, ...} as const?{| foo: string, ...|}?{ foo: string, ...} as const--
Object [1]Object [1]?ObjectObject | nullReadableMap@(未类型化字典)
Array<T>Array<T>?Array<T>Array<T> | nullReadableArrayNSArray(或在对象内部使用时为 RCTConvertVecToArray
FunctionFunction?FunctionFunction | null--
Promise<T>Promise<T>?Promise<T>Promise<T> | nullcom.facebook.react.bridge.PromiseRCTPromiseResolveRCTPromiseRejectBlock
Type Unions
'SUCCESS'|'FAIL'
Type Unions
'SUCCESS'|'FAIL'
仅可作为回调使用--
Callbacks
() =>
Callbacks
() =>
com.facebook.react.bridge.CallbackRCTResponseSenderBlock
numbernumberdoubleNSNumber

注:

[1] 我们强烈建议使用 Object literals,而不是 Objects。

信息

你也可能会发现参考 React Native 中核心模块的 JavaScript 规范很有用。这些规范位于 React Native 仓库中的 Libraries/ 目录内。