知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >
【小程序踩坑系列】小程序退出后掃碼再進(jìn)入,“外部”代碼不會(huì)再次執(zhí)行 ...
發(fā)表時(shí)間:2021-3-31
發(fā)布人:葵宇科技
瀏覽次數(shù):90
作者: 蔣歡
問(wèn)題:
小程序退出后再次掃碼進(jìn)入,只會(huì)執(zhí)行生命周期函數(shù)里的代碼,“外部”代碼不會(huì)再執(zhí)行。
具體描述:
在我們的項(xiàng)目里,我們會(huì)將一部分本地變量不寫在小程序 pageConfig 的 data 中,而直接在文件頭進(jìn)行聲明。這樣是為了減少 data 的大小,加快頁(yè)面渲染速度。但這也無(wú)意中帶來(lái)了新問(wèn)題,我們看看下面的例子。
出錯(cuò)的index.js文件:
const localFlag = true; // “外部”代碼,僅執(zhí)行一次初始化,第二次掃碼不會(huì)執(zhí)行!
const pageConfig = {
data: {
text: 'init data'
},
onLoad(this, p) {
console.error("localFlag默認(rèn)為:", localFlag);
// Do something you need...
localFlag = false;
}
}
Page(pageConfig);
按照以上代碼運(yùn)行,用戶初次掃碼時(shí),localFlag的值為true??墒?,當(dāng)用戶退出小程序,再次掃碼進(jìn)入時(shí),localFlag沒(méi)有再初始化,而為false了。如下圖所示:
如何避免上述情況的出現(xiàn)呢?
其實(shí)也很簡(jiǎn)單,就是在文件頭部只做本地變量聲明,而不做定義。將定義部分放在生命周期函數(shù)(如:onload)內(nèi)。具體代碼如下:
正確的ndex.js文件:
const localFlag; // 只做變量聲明而不定義
const pageConfig = {
data: {
text: 'init data'
},
onLoad(this, p) {
localFlag = true;
console.error("localFlag默認(rèn)為:", localFlag);
// Do something you need...
localFlag = false;
}
}
Page(pageConfig);
如此,每次進(jìn)入頁(yè)面 localFlag 都會(huì)被置為 true 了。
環(huán)境:
IOS 和 安卓 均可穩(wěn)定復(fù)現(xiàn)。
原因:
這看起來(lái)屬于小程序自身的模塊設(shè)計(jì)方式導(dǎo)致的。推測(cè)即使退出小程序,之前打開的頁(yè)面也沒(méi)有做到真正卸載,而處在內(nèi)存之中。下次再次進(jìn)入同一個(gè)頁(yè)面時(shí),會(huì)被喚起。
解決方案:
只在頭部代碼進(jìn)行本地變量聲明,而不定義。將本地變量的定義放在生命周期函數(shù)中去。
風(fēng)險(xiǎn):
屬于小程序開發(fā)的經(jīng)驗(yàn)積累相關(guān)。
相關(guān)案例查看更多
相關(guān)閱讀
- 做小程序被騙
- 汽車報(bào)廢回收軟件
- 汽車報(bào)廢軟件
- 昆明小程序定制開發(fā)
- 網(wǎng)站建設(shè)制作
- 云南微信小程序開發(fā)
- 網(wǎng)絡(luò)營(yíng)銷
- 云南小程序開發(fā)制作
- 企業(yè)網(wǎng)站
- 網(wǎng)站建設(shè)特性
- 云南小程序開發(fā)公司推薦
- .net網(wǎng)站
- 網(wǎng)頁(yè)制作
- SEO
- 云南小程序開發(fā)制作公司
- 網(wǎng)絡(luò)公司排名
- web教程
- 文山小程序開發(fā)
- 小程序公司
- 報(bào)廢車
- 小程序制作
- 小程序設(shè)計(jì)
- 開通微信小程序被騙
- 云南網(wǎng)站建設(shè)服務(wù)公司
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 網(wǎng)站建設(shè)首頁(yè)
- 網(wǎng)站建設(shè)招商
- 網(wǎng)站建設(shè)方法
- 云南網(wǎng)站建設(shè)列表網(wǎng)
- 云南小程序代建