最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解使用mpvue開發(fā)github小程序總結

 更新時間:2018年07月25日 10:06:10   作者:cheesekun  
這篇文章主要介紹了詳解使用mpvue開發(fā)github小程序總結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

最近有點閑,想起關注已久的mpvue寫小程序,所以稍微肝了半個多月寫了個github版的微信小程序,已上線?,F(xiàn)在總結一下遇到的坑。

掃碼體驗、

項目地址https://github.com/cheesekun/wx-github

mina坑

scroll-view 高度

可滾動視圖區(qū)域。

使用豎向滾動時,需要給<scroll-view/>一個固定高度,通過 WXSS 設置 height。

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

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

// 以 search 頁為例
// 滾動區(qū)域高度 = 總高度 - 搜索框高度 - 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攜帶不同參數(shù))

小程序生命周期

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

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

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

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

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

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

頁面onLoad的時候,推入query參數(shù)到棧中,onShow時,若當前頁面的參數(shù)和棧中最后一個元素相同,則不重新加載數(shù)據(jù)。當頁面被銷毀,則在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參數(shù)

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

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

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

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

上一頁的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,再賦值。但是遇到小程序頁面返回不會執(zhí)行onLoad

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

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

 return options
} 

后記

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

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Vue3中使用pnpm搭建monorepo開發(fā)環(huán)境

    Vue3中使用pnpm搭建monorepo開發(fā)環(huán)境

    這篇文章主要為大家介紹了Vue3中使用pnpm搭建monorepo開發(fā)環(huán)境示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • vue中設置echarts寬度自適應的代碼步驟

    vue中設置echarts寬度自適應的代碼步驟

    這篇文章主要介紹了vue中設置echarts寬度自適應的問題及解決方案,常常需要做到echarts圖表的自適應,一般是根據(jù)頁面的寬度做對應的適應,本文記錄一下設置echarts圖表的自適應的步驟,需要的朋友可以參考下
    2022-09-09
  • .vue文件 加scoped 樣式不起作用的解決方法

    .vue文件 加scoped 樣式不起作用的解決方法

    本篇文章主要介紹了.vue文件 加scoped 樣式不起作用的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 淺談在vue項目中如何定義全局變量和全局函數(shù)

    淺談在vue項目中如何定義全局變量和全局函數(shù)

    本篇文章主要介紹了淺談在vue項目中如何定義全局變量和全局函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue使用v-for數(shù)據(jù)渲染順序混亂的原因及解決方案

    Vue使用v-for數(shù)據(jù)渲染順序混亂的原因及解決方案

    在 Vue.js 中,使用 v-for 指令進行數(shù)據(jù)渲染時,有時會遇到渲染順序混亂的問題,這種問題主要與 Vue 的響應式系統(tǒng)、DOM 更新機制以及數(shù)組的變更方法有關,以下是對這一現(xiàn)象的深入分析及解決方案,需要的朋友可以參考下
    2025-01-01
  • vue 使用Jade模板寫html,stylus寫css的方法

    vue 使用Jade模板寫html,stylus寫css的方法

    這篇文章主要介紹了vue 使用Jade模板寫html,stylus寫css的方法,文中還給大家提到了使用jade注意事項,需要的朋友可以參考下
    2018-02-02
  • vue router 路由跳轉方法講解

    vue router 路由跳轉方法講解

    這篇文章主要介紹了vue router 路由跳轉方法概述,使用到Vue的項目,我們最常見使用的就是Vue配套的Vue Router庫,本文結合示例代碼給大家詳細講解,需要的朋友可以參考下
    2022-12-12
  • vue動態(tài)組件實現(xiàn)選項卡切換效果

    vue動態(tài)組件實現(xiàn)選項卡切換效果

    這篇文章主要為大家詳細介紹了vue動態(tài)組件實現(xiàn)選項卡切換效果的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue 如何實現(xiàn)配置@絕對路徑

    vue 如何實現(xiàn)配置@絕對路徑

    這篇文章主要介紹了vue 如何實現(xiàn)配置@絕對路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue中,在本地緩存中讀寫數(shù)據(jù)的方法

    vue中,在本地緩存中讀寫數(shù)據(jù)的方法

    今天小編就為大家分享一篇vue中,在本地緩存中讀寫數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

渑池县| 玉龙| 绥宁县| 丹凤县| 宁安市| 宁安市| 安岳县| 房产| 盐池县| 城口县| 保亭| 云南省| 赫章县| 岗巴县| 惠东县| 博白县| 万宁市| 浏阳市| 南川市| 佛坪县| 马鞍山市| 肃宁县| 曲麻莱县| 安泽县| 双峰县| 遵义市| 巫山县| 平顺县| 海晏县| 潞城市| 仲巴县| 罗江县| 红安县| 沙洋县| 康马县| 台南市| 盐亭县| 资源县| 城步| 罗田县| 莒南县|