微信小程序&mpvue問題總結(1)

微信小程序進入到首頁的時候,日誌打印出「created」, 「onlaunch」, 「mounted」,具體代碼以下:
那麼,在小程序中 created() 和 mounted() 究竟什麼時刻被調用

首頁:css

created () {
    console.log('created')
  },
  mounted () {
    console.log('mounted')
  },
  // 監聽頁面加載
  onLoad () { 
    console.log('onlaunch')
  }

解釋:vue

生命週期執行順序是vue的 created() 函數 —> 小程序的 onLoad()函數 -> vue的mounted()函數,故,小程序開始運行直到第一頁出現以前,全部的 vue 實例就已經被建立,也就是說全部的 created() 都被執行。針對每個頁面,onLoad()只會調用一次。
把微信小程序的生命週期勾子和mpvue的生命週期勾子一塊兒使用常令人陷入混亂,因此mpvue官網有這樣一句話:除特殊狀況外,不建議使用小程序的生命週期鉤子webpack

mpvue不支持vue-router
頁面跳轉常使用 navigateTo 或者 redirectTo

二者區別:navigateTo 進行頁面跳轉後不會關閉當前頁面,此時小程序左上角會出現一個「後退」按鈕,能夠點擊進入到上一個頁面。navigateTo 進行頁面跳轉後會關閉當前頁面,故用戶沒法進行後退操做。web

新增了page頁面,使用微信開發者工具加載不出來

解決辦法:從新 npm run dev
緣由:webpack編譯文件是由entery決定的,新增的頁面沒有加入到enteryvue-router

使用微信開發者工具,點擊input沒法獲取焦點(多發生在聯想電腦上,mac電腦上比較少見)

解決辦法:長按。若是長按也不行的話,就在該inpu輸入框的上方或者周圍點擊,試圖獲取焦點npm

下面點擊事件無效
// Button 是自定義組件
<Button :btns="resetBtn" @click="resetPwd"></Button>

解決辦法:小程序

<div @click="resetPwd">
     <Button :btns="resetBtn"></Button>
</div>

緣由:不能直接在組件上綁定點擊事件微信小程序

clipboard.png

利用props傳值卻栽了個跟頭,以下

建立了一個公共組件 MbInput ,調用該組件的時候須要經過 prop 傳入 maxlength 值。可是在開發過程當中沒有傳入,則默認解析結果爲 maxlength=0,因此致使沒法輸入信息。原代碼以下:緩存

export default {
  props: ['placeholder', 'list', 'maxlength']
}

建議修改以下,設置該字段必須填寫或者給出默認值安全

export default {
  props: {
  placeholder: {  // 必須提供字段
    required: true
  },
  list: {  // 必須提供字段
    required: true
  },
  maxlength: {   // 可選字段,有默認值
    default: 11
  }
}
}
設計給出這樣一個需求,要求頁面展現以下

要求:
頁面中的項目格式是動態變化的,須要顯示的項目通常在1-4個之間
只有一個的時候,上下左右居中顯示
有兩個的時候並排顯示,上下居中
有三個的時候,以下圖

圖片描述圖片描述圖片描述

佈局方法:
(1)使用左浮動
(2)使用flex佈局,justfy-content: space-around。一個項目的時候,左右居中顯示;兩個項目的時候,並排,空隙平均分配;三個項目的時候,第三個項目將在它所在的那一行左右居中,爲了解決這個問題,動態的在第三個後面添加一個同樣寬度的div,設置這個div透明,這樣就能達到咱們想要的排列效果

關於小程序的wx.setStorage等接口咱們能夠設置對本地緩存進行設置、獲取和清理。本地緩存最大爲10MB。那麼本地緩存時間是多久?

這些緩存不清理會永久的緩存

該小程序配置session配置

使用 session 的意義:安全。當客戶端和服務端創建起鏈接後,服務端生成JSESSIONID用戶標識該用戶身份,這個JSESSIONID將被客戶端主動存儲到cookie中,每次發起鏈接請求的時候,將cookie攜帶到header裏一塊兒發送。

不選擇向客戶端種cookie的緣由:不少時候cookie在客戶端(手機端)是被禁用的;因爲cookie存放在客戶端,容易被惡意竊取或修改。

配置流程下:
(1)創建鏈接後,服務端生成JSESSIONID發送給客戶端
(2)客戶端將該JSESSIONID存儲到本地,每次發送請求的時候將其放入header裏一塊兒傳送

header: {
        'content-type': 'application/x-www-form-urlencoded',
        cookie: `JSESSIONID=${(getApp().globalData.userInfo && getApp().globalData.userInfo.sessionId) || ''}`
      }
v-show不起做用

緣由:v-show 沒法用於 <template> 元素

解決辦法:使用v-if

v-if一般會完整的建立/銷燬組件,而v-show只是簡單的進行css切換,因此v-if切換時開銷更高,建議頻繁切換的花使用v-show

created()裏面的跳轉無效

不要在created()函數裏面進行頁面跳轉

連續點擊後退會報錯

小程序用navigate跳來跳去不刷新頁面嗎

相關文章
相關標籤/搜索