微信小程序 数据交互与渲染实例详解
发布时间 - 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)

