小程序非第一次(第二、三、四、五...)次进入页面时,不会重新计算 options 配置,当 options 配置中的某个属性是动态生成的时候,就会产生问题。
如下代码,预期是,每次进入页面,this.handler 都是一个全新的函数,但现状并非如此...
请问小程序每次进入页面时的 js 加载、Page(options) 初始化逻辑细节是如何设计的?
import { useLockCallback } from '../../utils/index'
Page({
handler: useLockCallback(function() {
// 只有第一次进入页面时,才会调用 useLockCallback 函数
// 从 Page2 返回 Page1,再从 Page1 第二次进入 Page2 时,没有调用 useLockCallback 重新生成一个新的 handler
})
})
猜测是当页面或组件被销毁时,相关模块的引用虽然也会被移除,但还没被垃圾回收释放内存
https://developers.weixin.qq.com/miniprogram/dev/framework/performance/tips/runtime_memory.html#5.%20%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%B8%B8%E8%A7%81%E7%9A%84%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2%E9%97%AE%E9%A2%98