旧架构
本库仍然支持旧架构(Bridge),但新功能会优先针对新架构开发,旧架构的支持也会逐步移除。如果你的应用可以迁移到新架构,建议尽早迁移。
在旧架构下,除了事件以外,其他用法完全相同。模块不通过默认导出上的 on* 方法发送事件,而是统一发送一个名为 "VideoTrim" 的原生事件:事件体的 name 字段是事件名,其余字段是该事件的数据。用 NativeEventEmitter 监听,再借助 VideoTrimEvent 类型按 name 收窄类型:
ts
import { NativeEventEmitter, NativeModules } from 'react-native';
import type { VideoTrimEvent } from 'react-native-video-trim';
const emitter = new NativeEventEmitter(NativeModules.VideoTrim);
const sub = emitter.addListener('VideoTrim', (event: VideoTrimEvent) => {
if (event.name === 'onFinishTrimming') {
console.log(event.outputPath);
}
});
// 之后
sub.remove();所有具名导出函数(showEditor()、trim()、compress() 等)在两种架构下完全一致,本库会在运行时自动选择对应的原生模块。
在 Android 上,可以把 ORG_GRADLE_PROJECT_newArchEnabled 设为 true 或 false 来切换架构进行测试。仓库中的示例应用在 example/src/App.OldArch.tsx 中提供了完整的旧架构页面。