国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

微信小程序如何實(shí)現數據交互與渲染

發(fā)布時(shí)間:2021-07-06 14:08 來(lái)源:億速云 閱讀:0 作者:小新 欄目: web開(kāi)發(fā)

小編給大家分享一下微信小程序如何實(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í),將立刻刪除涉嫌侵權內容。

人妻插B视频一区二区三区| 无码人妻精品一区二区三区免费| 天堂资源在线官网| 日韩精品极品视频在线观看免费| 亚洲AV片一区二区三区| 精人妻无码一区二区三区|