<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        詳解使用mpvue開發github小程序總結

        來源:懂視網 責編:小采 時間:2020-11-27 22:11:06
        文檔

        詳解使用mpvue開發github小程序總結

        詳解使用mpvue開發github小程序總結:前言 最近有點閑,想起關注已久的mpvue寫小程序,所以稍微肝了半個多月寫了個github版的微信小程序,已上線?,F在總結一下遇到的坑。 掃碼體驗、 項目地址:https://github.com/cheesekun/wx-github mina坑 scroll-view 高度 可滾動視
        推薦度:
        導讀詳解使用mpvue開發github小程序總結:前言 最近有點閑,想起關注已久的mpvue寫小程序,所以稍微肝了半個多月寫了個github版的微信小程序,已上線?,F在總結一下遇到的坑。 掃碼體驗、 項目地址:https://github.com/cheesekun/wx-github mina坑 scroll-view 高度 可滾動視

        小程序提供的scroll-view組件,想讓他能滾動,就要給他提供一個固定的高度。

        我們一般需求是,上一塊區域固定,下一塊區域可滾動,我的處理方法是,拿到機型的可視高度,減去上一塊固定區域的高度,動態賦值scroll-view最終高度。

        // 以 search 頁為例
        // 滾動區域高度 = 總高度 - 搜索框高度 - tabs 高度
        onLoad () {
         wx.getSystemInfo({
         success: (res) => {
         this.height = res.windowHeight // 獲取機型可視高度
         }
         })
        
         let query = wx.createSelectorQuery()
         // 選擇id
         query.select('#search').boundingClientRect()
        
         query.exec(res => {
         let searchH = res[0].height // 獲取search框高度
         this.height = this.height - searchH - this.tabsH
         })
        }

        坑點:wx.createSelectorQuery()獲取不了display: none的元素高度。

        我的解決方法是:在trending頁獲取到tabs組件的高度,再存放到vuex中,給search頁使用

        生命周期(同一page攜帶不同參數)

        小程序生命周期

        當我們從一個頁面①進入頁面②時,我們一般在onLoad進行初始數據的獲取,

        從頁面②返回到頁面①時,若兩個頁面是不同的page,如①為page/info,

        ②為page/repo,那沒問題,①頁面unOnLoad,②頁面onShow。

        但是若①為page/info?user=a,②為page/info?user=b,那gg了,從頁面②返回到頁面①,頁面①的數據會變成頁面②的數據

        為了避免這種情況,我一開始使用onShow代替onLoad,也就是在onShow的時候獲取頁面的初始數據。但是這個情況就有點可怕了,我們知道onShow很多情況都會觸發到,切換前后臺,從一個頁面返回到另一個,都會觸發onShow,這就導致會觸發很多不必要的請求,而且用戶體驗極差。

        可我很多需求就是類似從①為page/info?user=a到②為page/info?user=b,因此曲線救國想出用vuex維護有相關需求頁面的路由棧。

        頁面onLoad的時候,推入query參數到棧中,onShow時,若當前頁面的參數和棧中最后一個元素相同,則不重新加載數據。當頁面被銷毀,則在onUnload中把相應的頁面棧推出。這樣就可以避免很多無謂的onShow請求。

        onLoad () {
         this.reset()
         const options = getQuery()
         user = options.login
         // vuex
         this.reposStack.push(options)
        
         this.getRepos()
         },
         onShow () {
         const options = getQuery()
         // vuex
         let reposStack = JSON.parse(JSON.stringify(this.reposStack))
         let len = reposStack.length
         let endStack = reposStack[len - 1]
         if (JSON.stringify(endStack) === JSON.stringify(options)) {
         return
         }
         this.reset()
         user = options.login
         this.getRepos()
         },
         onUnload () {
         // vuex
         this.reposStack.slice(0, -1)
         }

        mpvue坑

        query參數

        mpvue可以通過 this.$root.$mp.query 在所有頁面的組件內獲取路徑參數。

        如果以mina來說的話,我們是通過在生命周期onLoad(options),拿到options上攜帶的路徑參數,mpvue提供了this.$root.$mp.query ,我們可以所有生命周期上使用。

        但是我們知道,當我們從當前頁返回到上一頁時,上一頁并不會執行onLoad(),

        假設當前頁和上一頁是同個page,只是攜帶參數不同的話,此時回退到上一頁,

        上一頁的this.$root.$mp.query不會變成自己的query,還是會變成當前頁的query

        舉例:①page/info?a=1 => ②page/info?b=2

        當我從②返回到①時,①的this.$root.$mp.query會變成{b:2}

        我猜mpvuethis.$root.$mp.query是通過onLoad(options)獲取到options,再賦值。但是遇到小程序頁面返回不會執行onLoad

        為了避免麻煩,我直接使用了小程序的api getCurrentPages(),獲取路由棧中最后一個路由的參數

        getCurrentPages() 函數用于獲取當前頁面棧的實例,以數組形式按棧的順序給出,第一個元素為首頁,最后一個元素為當前頁面。
        /**
         * 獲取當前路徑參數
         * 不用mpvue提供的this.$root.$mp.query
         * 因為其進入同一頁面,參數不會變化
        */
        export function getQuery () {
         /* 獲取當前路由棧數組 */
         const pages = getCurrentPages()
         const currentPage = pages[pages.length - 1]
         const options = currentPage.options
        
         return options
        } 

        后記

        前面幾個問題是我初次使用mpvue開發小程序遇到的最大的坑了吧。(好久沒有寫東西了,寫得好爛。)不過確實使用mpvue開發小程序,能組件化,支持npm,比原生開發舒服很多。體驗還是很好的。

        小程序現在是真的太火了。感覺是個前端都要去玩一下。

        再次推一下項目地址,有興趣的朋友可以參考一下。https://github.com/cheesekun/wx-github

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        詳解使用mpvue開發github小程序總結

        詳解使用mpvue開發github小程序總結:前言 最近有點閑,想起關注已久的mpvue寫小程序,所以稍微肝了半個多月寫了個github版的微信小程序,已上線。現在總結一下遇到的坑。 掃碼體驗、 項目地址:https://github.com/cheesekun/wx-github mina坑 scroll-view 高度 可滾動視
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产男女猛烈无遮挡免费视频| 亚欧色视频在线观看免费| 国产精品高清全国免费观看| 亚洲国产日韩在线人成下载| aⅴ免费在线观看| 亚洲国产成人91精品| 在线视频免费观看高清| 95免费观看体验区视频| 免费影院未满十八勿进网站| 亚洲AV无码久久精品蜜桃| 男人j进入女人j内部免费网站| 99久久亚洲综合精品成人网| 99精品免费观看| 亚洲日产2021三区在线| 成人免费福利电影| 羞羞视频免费观看| 亚洲人成网7777777国产| 免费A级毛片无码专区| 亚洲综合久久一本伊伊区| 日韩视频在线免费观看| 人成免费在线视频| 国产亚洲无线码一区二区| 91福利免费体验区观看区| 亚洲中文字幕无码久久2020| 亚洲国产精品成人| 无码国产精品一区二区免费16| 亚洲日本国产乱码va在线观看| 日本一道一区二区免费看| 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲男女内射在线播放| 在线看无码的免费网站| 亚洲成av人片天堂网无码】| 亚洲色无码一区二区三区| 亚洲啪啪免费视频| 色www免费视频| 亚洲三级电影网站| 国产嫩草影院精品免费网址| 免费精品久久天干天干| 亚洲熟妇av午夜无码不卡| 亚洲av之男人的天堂网站| 国产免费看插插插视频|