免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動推薦你的品牌,搶占AI流量入口!  點擊查看

小程序模板網(wǎng)

【小程序踩坑系列】小程序退出后掃碼再進入,“外部”代碼不會再次執(zhí)行 .

發(fā)布時間:2018-05-02 15:13 所屬欄目:小程序開發(fā)教程

問題:

小程序退出后再次掃碼進入,只會執(zhí)行生命周期函數(shù)里的代碼,“外部”代碼不會再執(zhí)行。

具體描述:

在我們的項目里,我們會將一部分本地變量不寫在小程序 pageConfig 的 data 中,而直接在文件頭進行聲明。這樣是為了減少 data 的大小,加快頁面渲染速度。但這也無意中帶來了新問題,我們看看下面的例子。

出錯的index.js文件:


    const localFlag = true; // “外部”代碼,僅執(zhí)行一次初始化,第二次掃碼不會執(zhí)行!

    const pageConfig = {
        data: {
            text: 'init data'
        },
        onLoad(this, p) {  
            console.error("localFlag默認為:", localFlag);

            // Do something you need...
            localFlag = false;
        }
    }

    Page(pageConfig);

按照以上代碼運行,用戶初次掃碼時,localFlag的值為true??墒牵斢脩敉顺鲂〕绦?,再次掃碼進入時,localFlag沒有再初始化,而為false了。如下圖所示:

 

 

如何避免上述情況的出現(xiàn)呢?

其實也很簡單,就是在文件頭部只做本地變量聲明,而不做定義。將定義部分放在生命周期函數(shù)(如:onload)內(nèi)。具體代碼如下:

正確的ndex.js文件:


    const localFlag; // 只做變量聲明而不定義

    const pageConfig = {
        data: {
            text: 'init data'
        },
        onLoad(this, p) {  
            localFlag = true;
            console.error("localFlag默認為:", localFlag);

            // Do something you need...
            localFlag = false;
        }
    }

    Page(pageConfig);

如此,每次進入頁面 localFlag 都會被置為 true 了。

環(huán)境:

IOS 和 安卓 均可穩(wěn)定復現(xiàn)。

原因:

這看起來屬于小程序自身的模塊設計方式導致的。推測即使退出小程序,之前打開的頁面也沒有做到真正卸載,而處在內(nèi)存之中。下次再次進入同一個頁面時,會被喚起。

解決方案:

只在頭部代碼進行本地變量聲明,而不定義。將本地變量的定義放在生命周期函數(shù)中去。

風險:

屬于小程序開發(fā)的經(jīng)驗積累相關(guān)。


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.szcjxy.com/wxmini/doc/course/24159.html 復制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢: 點擊咨詢
在線客服