小程序開(kāi)發(fā)之二(toast封裝)

前一篇文章封裝了http請(qǐng)求,這一篇教大家封裝toast勺届。

wx.showToast(OBJECT)

參數(shù) 類型 必填 說(shuō)明 最低版本
title String 提示的內(nèi)容
icon String 圖標(biāo),有效值 "success", "loading"
image String 自定義圖標(biāo)的本地路徑,image 的優(yōu)先級(jí)高于 icon 1.1.0
duration Number 提示的延遲時(shí)間,單位毫秒沃呢,默認(rèn):1500
mask Boolean 是否顯示透明蒙層,防止觸摸穿透拆挥,默認(rèn):false
success Function 接口調(diào)用成功的回調(diào)函數(shù)
fail Function 接口調(diào)用失敗的回調(diào)函數(shù)
complete Function 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功薄霜、失敗都會(huì)執(zhí)行)

可以看到微信提供的showToast的icon只支持"success", "loading"某抓,這并不可能完全滿足,肯定還有waring 或者error的提示惰瓜。</br> 但是可以看到還提供了個(gè)image否副,可以傳圖片,這明擺著要我們自己封裝崎坊。所以有了以下思考:

  • 使用icon不了备禀,使用icon可以,icon和image兼容使用怕圖標(biāo)風(fēng)格不一奈揍,所以最好全部用image曲尸,拋棄使用icon。
  • 微信方法提供了success男翰,fail另患,complete的回調(diào)。但這三者都是方法執(zhí)行后回調(diào)(toast還沒(méi)隱藏)蛾绎±セ基本用不上。我們可能用上的場(chǎng)景是success成功后彈出提示租冠,然后等toast消失再回調(diào)執(zhí)行跳轉(zhuǎn)之類的操作鹏倘。

思考完后我們就開(kāi)始動(dòng)手吧。

磨刀不誤砍柴工肺稀,封裝好后才可以事半功倍第股。

找圖標(biāo)

前面說(shuō)了应民,我們拋棄使用微信的icon全部使用圖片话原,所有我們需要找一套提示的圖片,一般有:

  • success
  • error
  • loading
  • warning

常用這四個(gè)诲锹,根據(jù)需求自己添加即可繁仁。

去哪里找呢?其實(shí)去字體圖標(biāo)的網(wǎng)站都提供下載png圖片归园。

還可以自己設(shè)計(jì)一套黄虱。

不過(guò)圖片有幾個(gè)注意點(diǎn)

  1. 圖標(biāo)要白色,應(yīng)為loading遮罩層是灰色的庸诱,默認(rèn)的提示字體也是白色的捻浦。
  2. 尺寸1:1,不需要太大桥爽。也不要太小啦朱灿,200*200左右吧。

推薦個(gè)網(wǎng)址iconfont

選好圖標(biāo)后下載png格式圖片即可钠四,下載時(shí)候有尺寸跟顏色選擇盗扒。

[圖片上傳失敗...(image-7eb362-1510306485767)]

下載完后再根目錄建目錄/assets/icon 把圖標(biāo)圖片放好即可。

/utils/message.js

我們把toast,當(dāng)做工具類侣灶,放在工具目錄下甸祭,命名為message。

import es6 from '../lib/es6-promise.min.js'
//引入es6-promise 上github下就好
let def={
  timer:1500,//默認(rèn)顯示時(shí)間
  error: 'Message傳參錯(cuò)誤褥影。只傳title字符串或{title:"",timer""}對(duì)象'//默認(rèn)錯(cuò)誤提示
}
let message ={
  success:function (params){
    return new es6.Promise((resolve, reject) => {
      this.opera('success', params);
    })
  },
  error:function(params){
    return new es6.Promise((resolve, reject) => {
      this.opera('error', params);
    })
  },
  warning: function (params){
    return new es6.Promise((resolve, reject) => {
      this.opera('warning', params);
    })
  },
  loading: function (params){
    return new es6.Promise((resolve, reject) => {
      this.opera('loading', params);
    })
  },
  opera:function(type,params){
    var totastParams= {
      title: "",
      duration: 0
    }
    var result = new es6.Promise((resolve, reject) => {
      if (typeof (params) === 'string') {
        totastParams.title=params;
        totastParams.duration=def.timer;
        resolve(totastParams);
      } else if (typeof (params) === 'object' && params.title && params.timer && typeof (params.timer) === 'number') {
        totastParams.title = params.title;
        totastParams.duration = params.timer;
        resolve(totastParams)
      } else {
        reject()
      }
    })
    if (result._state==1){//傳參正確
      if (type == 'success') {//注意圖片的地址要寫(xiě)page頁(yè)面相對(duì)于圖片的地址池户,應(yīng)為引用的一般為頁(yè)面∥苯祝或者直接把圖片放在云上煞檩,直接填寫(xiě)外鏈更方便。注意填寫(xiě)服務(wù)器域名栅贴。
        totastParams.image = '../../assets/icon/success.png';
      } else if (type == 'error') {
        totastParams.image = '../../assets/icon/errot.png';
      } else if (type == 'warning') {
        totastParams.image = '../../assets/icon/warning.png';
      } else if (type == 'loading') {
        totastParams.loading = '../../assets/icon/loading.png';
      }
      return new es6.Promise((resolve, reject) => {
        totastParams.complete=function(){//添加提示消失后的回調(diào)
          setTimeout(function () {
            resolve();
          }, totastParams.duration)
        }
        console.log(totastParams);
        wx.showToast(totastParams)

      })
    } else {//傳參錯(cuò)誤
      console.log(def.error);
    }
    
  }
}

export default message;

使用

  1. 先在app.js在引入

現(xiàn)在app.js全局引入:

import Message from './utils/message.js'
import config from './config.js'
App({
  onLaunch: function () {
    //......
  },
  Message:Message
})

然后就可以在page的每個(gè)頁(yè)面使用了:

//獲取應(yīng)用實(shí)例
const app = getApp()

app.Page({
  data: {
    
  }, 
  onLoad: function () {
    app.Message.success('成功').then(function(){//簡(jiǎn)單模式
        //toast隱藏后的操作斟湃。  
    })
    app.Message.success({title:'成功',timer:3000}).then(function(){//自定義模式
        //toast隱藏后的操作。  
    })
    //其他方法一樣
    //app.Message.error()
    //app.Message.warning().....
  }
});

是不是方便多了檐薯?

原文鏈接

未標(biāo)題-1.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凝赛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坛缕,更是在濱河造成了極大的恐慌墓猎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赚楚,死亡現(xiàn)場(chǎng)離奇詭異毙沾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)宠页,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)左胞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人举户,你說(shuō)我怎么就攤上這事烤宙。” “怎么了俭嘁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵躺枕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我供填,道長(zhǎng)拐云,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任近她,我火速辦了婚禮叉瘩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泄私。我一直安慰自己房揭,他們只是感情好备闲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著捅暴,像睡著了一般恬砂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓬痒,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天泻骤,我揣著相機(jī)與錄音,去河邊找鬼梧奢。 笑死狱掂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亲轨。 我是一名探鬼主播趋惨,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惦蚊!你這毒婦竟也來(lái)了剑辫?” 一聲冷哼從身側(cè)響起逃贝,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤氯材,失蹤者是張志新(化名)和其女友劉穎荣挨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體莉掂,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葛圃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憎妙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片库正。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尚氛,靈堂內(nèi)的尸體忽然破棺而出诀诊,到底是詐尸還是另有隱情洞渤,我是刑警寧澤阅嘶,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站载迄,受9級(jí)特大地震影響讯柔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜护昧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一魂迄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惋耙,春花似錦捣炬、人聲如沸熊昌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)婿屹。三九已至,卻和暖如春推溃,著一層夾襖步出監(jiān)牢的瞬間昂利,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工铁坎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜂奸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓硬萍,卻偏偏與公主長(zhǎng)得像扩所,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朴乖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)碌奉、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評(píng)論 4 62
  • 銀龍 2014.09.05 何方喜奏衷腸曲寒砖,空聞滿地傳哀聲赐劣。 頻入云宵隨鶴雁,音飛天外困龍鷹哩都。 花前難得傷心事魁兼,月...
    醉仙王子閱讀 214評(píng)論 0 0
  • 以前家里開(kāi)過(guò)飯館,在一個(gè)小鎮(zhèn)上漠嵌,家里一窮二白的時(shí)候咐汞,我媽媽靠開(kāi)飯館發(fā)的家,一下子成了當(dāng)?shù)睾苊麣獾睦习辶巳迓梗菚r(shí)候被人...
    冷颼颼閱讀 240評(píng)論 0 1
  • 實(shí)現(xiàn)類似定時(shí)器功能 依賴 2.布局文件中只是簡(jiǎn)單的TextView控件來(lái)顯示文本化撕。目前涉及到及所了解的RxAndr...
    _凌浩雨閱讀 188評(píng)論 0 1