對小程序的一些原生api進行封裝

我們在開發(fā)原生小程序時愕撰,對微信提供的api總需要占位置且重復度極高礁蔗,這邊我整理了一下常用的api進行封裝

export?default?class?wxapi?{

????/*

????*微信小程序API類

????*/

????//?加載

????showLoading(

????????title?=?'加載中...',

????????mask?=?true

????)?{

????????wx.showLoading({

????????????title,

????????????mask

????????})

????}

????//?提示

????showToast(

????????title,

????????icon?=?'none',

????????sucFn?=?()?=>?{

????????},

????????duration?=?2000,

????????mask?=?true

????)?{

????????wx.showToast({

????????????title,

????????????icon,

????????????duration,

????????????mask,

????????????success:?()?=>?{

????????????????return?setTimeout(sucFn,?duration)

????????????}

????????})

????}

????//?彈窗

????showModal(

????????content,

????????sucFn?=?()?=>?{

????????},

????????title?=?'提示',

????????showCancel?=?true,

????????confirmText?=?'確定',

????????cancelText?=?'取消'

????)?{wx.showModal({

????????????title,

????????????content,

????????????confirmText,

????????????cancelText,

????????????showCancel,

????????????success:?res?=>?{

????????????????return?sucFn(res)

????????????}

????????})

????}

????//?操作菜單

????showActionSheet(

????????itemList,

????????sucFn?=?()?=>?{

????????},

????)?{

????????wx.showActionSheet({

????????????itemList,

????????????success:?res?=>?{

????????????????return?sucFn(res.tapIndex)

????????????}

????????})

????}

????//?路由

????navTo(url,?isSub?=?false)?{

????????wx.navigateTo({

????????????url:?isSub???`/subPackage/pages/${url}`?:?`/pages/${url}`?

????????})

????}

????redTo(url,?isSub?=?false)?{

????????wx.redirectTo({

????????????url:?isSub???`/subPackage/pages/${url}`?:?`/pages/${url}`

????????})

????}

????tabTo(url)?{

????????wx.switchTab({

????????????url:?isSub???`/subPackage/pages/${url}`?:?`/pages/${url}`

????????})

????}

????relTo(url,?isSub?=?false)?{

????????wx.relaunch({

????????????url:?isSub???`/subPackage/pages/${url}`?:?`/pages/${url}`

????????})

????}

????navBack(

????????delta?=?1,

????????sucFn?=?()?=>?{

????????},

????)?{

????????wx.navigateBack({

????????????delta,

????????????success:?()?=>?{

????????????????return?sucFn

????????????}

????????})

????}

????//?登錄

????login()?{

????????return?new?Promise(resolve?=>?{

????????????wx.login({

????????????????success:?res?=>?{

????????????????????resolve(res.code)

????????????????}

????????????})

????????})

????}

????//?上傳文件

????uploadFile(url,?filePath,?name,?formData?=?{})?{

????????return?new?Promise(resolve?=>?{

????????????wx.uploadFile({

????????????????url:?config.apiBaseUrl?+?url,

????????????????filePath,

????????????????name,

????????????????header:?{

????????????????????'content-type':?'application/x-www-form-urlencoded',

????????????????????'appid':?config.appid,

????????????????????'Authorization':?userUtil.getKey('token')

????????????????},

????????????????formData,

????????????????success:?res?=>?{

????????????????????resolve(res.data)

????????????????},

????????????????fail:?()?=>?{

????????????????????resolve('')

????????????????}

????????????})

????????})

????}

????//?選擇圖片

????chooseImage(count)?{

????????return?new?Promise(resolve?=>?{

????????????wx.chooseImage({

????????????????count,

????????????????success:?res?=>?{

????????????????????resolve(res.tempFilePaths)

????????????????},

????????????????fail:?()?=>?{

????????????????????resolve('')

????????????????}

????????????})

????????})

????}

????//?授權

????getSetting()?{

????????return?new?Promise(resolve?=>?{

????????????wx.getSetting({

????????????????success:?res?=>?{

????????????????????resolve(res.authSetting)

????????????????}

????????????})

????????})

????}

????openSetting()?{

????????return?new?Promise(resolve?=>?{

????????????wx.openSetting({

????????????????success:?res?=>?{

????????????????????resolve(res.authSetting)

????????????????}

????????????})

????????})

????}

????//?收貨地址

????chooseAddress()?{

????????return?new?Promise(resolve?=>?{

????????????wx.chooseAddress({

????????????????success:?res?=>?{

????????????????????resolve(res)

????????????????}

????????????})

????????})

????}

????//?設置標題

????setTitle(title)?{

????????wx.setNavigationBarTitle({

????????????title

????????})

????}

????//?獲取圖片信息

????getImageInfo(src)?{

????????return?new?Promise(resolve?=>?{

????????????wx.getImageInfo({

????????????????src,

????????????????success:?res?=>?{

????????????????????console.log(res)

????????????????????resolve(res)

????????????????},

????????????????fail:?()?=>?{

????????????????????resolve('')

????????????????}

????????????})

????????})

????}

????//?獲取某項授權

????async?getSomeSetting(setting,?doSomething,?callback)?{

????????//?獲取授權信息

????????const?auth?=?await?this.getSetting();

????????if?(auth)?{

????????????if?(Object.keys(auth).indexOf(setting.type)?===?-1?||?auth[setting.type])?{

????????????????return?doSomething()

????????????}?else?if?(!auth[setting.type])?{

????????????????this.showModal(`你已拒絕${setting.name}授權骆膝,請按確定前往新頁面選中"${setting.name}"重新授權`,?res?=>?{

????????????????????if?(res.confirm)?{

????????????????????????this.openSettingAfter(doSomething);

????????????????????????if?(arguments.length?>?2)?return?callback()

????????????????????}

????????????????})

????????????}

????????}

????}

????//?獲取某項授權

????async?checkAuthorizationSetting(setting)?{

????????const?auth?=?await?this.getSetting();

????????if?(auth?&&?auth[setting.type])?return?true;

????????this.showModal(`您已拒絕${setting.name}授權惶傻,請按確定前往新頁面選中"${setting.name}"重新授權`,?async?res?=>?{

????????????if?(res.confirm)?{

????????????????let?auth?=?await?this.openSetting();

????????????????return?auth?&&?auth[setting.type];

????????????}

????????????return?false;

????????})

????????return?false;

????}

????//?打開微信授權頁面

????async?openSettingAfter(doSomething)?{

????????const?scope?=?await?this.openSetting();

????????if?(scope['scope.address'])?return?doSomething()

????}

????showTabBar(animation?=?true)?{

????????wx.showTabBar({

????????????animation:?animation

????????})

????}

????hideTabBar(animation?=?true)?{

????????wx.hideTabBar({

????????????animation:?animation

????????})

????}

}



使用時直接引用 例如:

import?wxapi?from?'./utils/wxapi';

wxapi:?new?wxapi(),?//常用的微信接口封裝

app.wxapi.showLoading('加載中~');

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市壹瘟,隨后出現(xiàn)的幾起案子鲫剿,更是在濱河造成了極大的恐慌,老刑警劉巖稻轨,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灵莲,死亡現(xiàn)場離奇詭異,居然都是意外死亡殴俱,警方通過查閱死者的電腦和手機政冻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粱挡,“玉大人赠幕,你說我怎么就攤上這事⊙ぃ” “怎么了榕堰?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嫌套。 經(jīng)常有香客問我逆屡,道長,這世上最難降的妖魔是什么踱讨? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任魏蔗,我火速辦了婚禮,結果婚禮上痹筛,老公的妹妹穿的比我還像新娘莺治。我一直安慰自己廓鞠,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布谣旁。 她就那樣靜靜地躺著床佳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榄审。 梳的紋絲不亂的頭發(fā)上砌们,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音搁进,去河邊找鬼浪感。 笑死,一個胖子當著我的面吹牛饼问,可吹牛的內容都是我干的影兽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼匆瓜,長吁一口氣:“原來是場噩夢啊……” “哼赢笨!你這毒婦竟也來了未蝌?” 一聲冷哼從身側響起驮吱,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萧吠,沒想到半個月后左冬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡纸型,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年拇砰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狰腌。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡除破,死狀恐怖,靈堂內的尸體忽然破棺而出琼腔,到底是詐尸還是另有隱情瑰枫,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布丹莲,位于F島的核電站光坝,受9級特大地震影響,放射性物質發(fā)生泄漏甥材。R本人自食惡果不足惜盯另,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洲赵。 院中可真熱鬧鸳惯,春花似錦商蕴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至后德,卻和暖如春部宿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓢湃。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工理张, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绵患。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓雾叭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親落蝙。 傳聞我的和親對象是個殘疾皇子织狐,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內容