微信小程序 数据交互与渲染实例详解

发布时间 - 2026-01-10 22:42:14    点击率:

微信小程序 数据交互与渲染

实现效果图:

微信小程序的api中提供了网络交互的api,我们只要调用即可和后端进行数据交互,该api为wx.request.,具体代码如下。

//list.js 
//获取应用实例 
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函数中进行了网络请求,请求的数据放到了data的list中。我们使用setData来修改list,在该函数调用之后,微信小程序的框架就会判断数据状态的变化,然后进行diff判断,如果有变化就渲染到界面中。这个与react.js的渲染方式相似,主要是内部维护了一个类似于虚拟文档的对象,然后通过对虚拟文档的判断来呈现界面,这样可以大大提高性能。

这里我们还做了一个下拉刷新的触发,即onPullDownRefresh函数,为了能够使用下拉刷新,我们需要进行配置,现在我们只需要当前页面生效,所以只要在对应页的json中配置即可,即在list.json中配置。

list.json

{ 
  "navigationBarTitleText": "产品列表",   
  "enablePullDownRefresh":true 
} 

如果需要所有的页面的生效,可以在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中,还有一个pages,我们需要路由的页面都需要在这里注册,否则无法路由到。

在请求数据的时候,加入了等待和获取成功失败的提示。这需要相应的页面配合,页面代码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; 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 微信小程序  # 数据交互与渲染  # 数据交互与渲染详解及实例代码  # 微信小程序上传图片到服务器实例代码  # 微信小程序 消息推送php服务器验证实例详解  # 微信小程序ajax实现请求服务器数据及模版遍历数据功能示例  # 微信小程序实现打开并下载服务器上面的pdf文件到手机  # 微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例  # 微信小程序搭建自己的Https服务器  # 微信小程序遇到修改数据后页面不渲染的问题解决  # 微信小程序 条件渲染详解  # 微信小程序 教程之列表渲染  # 微信小程序使用for循环动态渲染页面操作示例  # 微信小程序模版渲染详解  # 微信小程序开发(一):服务器获取数据列表渲染操作示例  # 就会  # 文档  # 在这里  # 希望能  # 还有一个  # 只需要  # 谢谢大家  # 类似于  # 即在  # 正在加载  # 进行了  # 主要是  # 后端  # 应用实例  # 只要在  # complete  # onLoad  # navigateTo  # logs  # bindViewTap 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 制作公司内部网站有哪些,内网如何建网站?  使用C语言编写圣诞表白程序  如何打造高效商业网站?建站目的决定转化率  如何用PHP工具快速搭建高效网站?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何在建站宝盒中设置产品搜索功能?  如何在香港服务器上快速搭建免备案网站?  活动邀请函制作网站有哪些,活动邀请函文案?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  详解jQuery中基本的动画方法  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何集成Inertia.js与Vue/React?(安装配置)  JS实现鼠标移上去显示图片或微信二维码  浅析上传头像示例及其注意事项  php485函数参数是什么意思_php485各参数详细说明【介绍】  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  桂林网站制作公司有哪些,桂林马拉松怎么报名?  韩国服务器如何优化跨境访问实现高效连接?  微信小程序 HTTPS报错整理常见问题及解决方案  js代码实现下拉菜单【推荐】  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何使用Blade模板引擎?(完整语法和示例)  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  使用spring连接及操作mongodb3.0实例  米侠浏览器网页背景异常怎么办 米侠显示修复  Mybatis 中的insertOrUpdate操作  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何挑选高效建站主机与优质域名?  Android自定义listview布局实现上拉加载下拉刷新功能  网站优化排名时,需要考虑哪些问题呢?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  独立制作一个网站多少钱,建立网站需要花多少钱?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Python文件操作最佳实践_稳定性说明【指导】  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  微信公众帐号开发教程之图文消息全攻略  如何快速建站并高效导出源代码?  Linux系统命令中tree命令详解  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  EditPlus中的正则表达式 实战(2)