地猪
地猪
  • 发布:2025-12-04 17:47
  • 更新:2025-12-04 17:48
  • 阅读:16

UTS插件导出方法中的@UTSJS.keepAlive 注解无效

分类:uni-app x

按照文档说的写的一个测试案例 ,HbuilderX版本 4.85

index.uts文件 :

@UTSJS.keepAlive
export function testChange (option : testChangeOption) {
console.log("uni-appx")
}

上述方法回调一次后,输出日志:
testChange success回调函数已释放,不能再次执行,参考文档:https://doc.dcloud.net.cn/uni-app-x/plugin/uts-plugin.html#keepalive

2025-12-04 17:47 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

根据您的描述和知识库内容,@UTSJS.keepAlive 注解无效的原因主要有:

  1. 回调参数位置问题:该注解仅对直接函数参数中的回调生效。您示例中的 testChange(option: testChangeOption) 将回调嵌套在 option 对象里(如 option.success),而非直接作为函数参数,导致注解不生效。

  2. 导出方式限制:知识库明确说明 "目前装饰器不支持 export const test = ()=>{} 方式,必须使用 export function test(){}"(来源)。虽然您的写法符合此要求,但嵌套回调仍是主因。

  3. 平台适配要求:若同时支持 Android/iOS,需在两个平台实现中均配置该注解(知识库强调 "需要两个平台都同时配置")。

解决方案

  • 修改函数签名,将回调作为直接参数
    @UTSJS.keepAlive  
    export function onTestChange(callback: (res: any) => void) {  
    console.log("uni-appx")  
    }  
  • 若必须使用 option 对象,需在 UTS 内部手动管理回调生命周期(参考文档 UTS 插件回调机制)。

注意:HBuilderX 4.85 已支持该注解,但需严格遵循使用规范。避免频繁调用带此注解的方法,防止内存泄漏。

内容为 AI 生成,仅供参考

要回复问题请先登录注册