@NativeClass() 装饰器使用最佳实践
@NativeClass()
装饰器在 NativeScript 7 中引入,提供了一种简单的方法来装饰任何旨在扩展/自定义 JavaScript ESM 世界中平台原生类的类。
关于它的使用需要注意一些事项。
仅在一个文件中使用时
如果仅在同一个文件中使用自定义原生类,可以按如下方式定义它
ts
@NativeClass()
class CustomClass extends NSObject {}
const customClassInstance = CustomClass.new()
这允许代码自然编译,并且将按预期工作。
在需要在一个文件中定义 iOS 和 Android 自定义原生类时
在这种情况下,可以使用设置方法来缓解任何交叉编译问题,例如
ts
let customClass
function setupCustomClass() {
if (global.isAndroid) {
@NativeClass()
class CustomClass extends android.view.View {}
customClass = CustomClass
} else {
@NativeClass()
class CustomClass extends NSObject {}
customClass = CustomClass
}
}
setupCustomClass()
const customClassInstance = new customClass() // can handle different platform args with ternary if needed
global.isAndroid
条件将在为 iOS 构建应用程序时被删除,因此您的编译代码是干净且隔离的,同时允许您在一个文件中进行处理。
从文件导出并在其他地方使用时
由于 @NativeClass()
装饰器修改了 JS 语法以与 NativeScript 运行时一起工作,因此您希望确保在文件之外使用该符号时符号被正确导出。以下是如何执行此操作
ts
// custom-class.ts
@NativeClass()
class CustomClass extends NSObject {}
export { CustomClass }
// usage.ts
import { CustomClass } from './custom-class'
- 下一步
- 介绍