- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) >
- 微信小程序如何實(shí)現數據交互與渲染
小編給大家分享一下微信小程序如何實(shí)現數據交互與渲染,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
微信小程序 數據交互與渲染
實(shí)現效果圖:
微信小程序的api中提供了網(wǎng)絡(luò )交互的api,我們只要調用即可和后端進(jìn)行數據交互,該api為wx.request.,具體代碼如下。
//list.js //獲取應用實(shí)例 var app = getApp() Page({ data: { list:[], hiddenLoading: true, url: '' }, loadList: function () { var that = this; that.setData({ hiddenLoading: !that.data.hiddenLoading }) var url = app.urls.CloudData.getList; that.setData({ url: url }); wx.request({ url: url, data: {}, method: 'GET', success: function (res) { var list= res.data.list; if (list == null) { list = []; } that.setData({ list: list, hiddenLoading: !that.data.hiddenLoading }); wx.showToast({ title: "獲取數據成功", icon: 'success', duration: 2000 }) }, fail: function (e) { var toastText='獲取數據失敗' + JSON.stringify(e); that.setData({ hiddenLoading: !that.data.hiddenLoading }); wx.showToast({ title: toastText, icon: '', duration: 2000 }) }, complete: function () { // complete } }), //事件處理函數 bindViewTap: function () { wx.navigateTo({ url: '../logs/logs' }) }, onLoad: function () { }, onReady: function () { this.loadList(); }, onPullDownRefresh: function () { this.loadList(); wx.stopPullDownRefresh() } })
在loadList函數中進(jìn)行了網(wǎng)絡(luò )請求,請求的數據放到了data的list中。我們使用setData來(lái)修改list,在該函數調用之后,微信小程序的框架就會(huì )判斷數據狀態(tài)的變化,然后進(jìn)行diff判斷,如果有變化就渲染到界面中。這個(gè)與react.js的渲染方式相似,主要是內部維護了一個(gè)類(lèi)似于虛擬文檔的對象,然后通過(guò)對虛擬文檔的判斷來(lái)呈現界面,這樣可以大大提高性能。
這里我們還做了一個(gè)下拉刷新的觸發(fā),即onPullDownRefresh函數,為了能夠使用下拉刷新,我們需要進(jìn)行配置,現在我們只需要當前頁(yè)面生效,所以只要在對應頁(yè)的json中配置即可,即在list.json中配置。
list.json
{ "navigationBarTitleText": "產(chǎn)品列表", "enablePullDownRefresh":true }
如果需要所有的頁(yè)面的生效,可以在app.json中的window中配置。
app.json
{ "pages":[ "pages/index/index", "pages/logs/logs", "pages/list/list" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle":"black", "enablePullDownRefresh":true } }
在app.json中,還有一個(gè)pages,我們需要路由的頁(yè)面都需要在這里注冊,否則無(wú)法路由到。
在請求數據的時(shí)候,加入了等待和獲取成功失敗的提示。這需要相應的頁(yè)面配合,頁(yè)面代碼list.wxm.如下
<!--list.wxml--> <view class="container container-ext"> <!--默認隱藏--> <loading hidden="{{hiddenLoading}}">正在加載</loading> <scroll-view scroll-y="true"> <view> <block wx:for="{{list}}" wx:key="no"> <view class="widget"> <view> <text >{{item.no}}({{item.content}})</text> </view> </view> </block> </view> </scroll-view> </view>
/**list.wxss**/ .widget { position: relative; margin-top: 5rpx; margin-bottom: 5rpx; padding-top: 10rpx; padding-bottom: 10rpx; padding-left: 40rpx; padding-right: 40rpx; border: #ddd 1px solid; }
/**app.wxss**/ .container { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: space-between; box-sizing: border-box; padding-top: 10rpx; padding-bottom: 10rpx; }
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系站長(cháng)郵箱:ts@56dr.com進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2 建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站