支付宝小程序 | 下拉刷新、自动刷新、上拉加载

支付宝,程序,下拉,刷新,自动,加载 · 浏览次数 : 90

小编点评

**代码示例** ```typescript import { Page, View, Text, ViewArray, ViewBlock, ViewList } from 'showdown'; // 示例数据 const list = [ { name: '螺Dès粉', value: 1 }, { name: '酸辣粉', value: 2 }, { name: '羊肉粉', value: 3 }, ]; // 示例页面 export default class Demo extends Page { data = { list: list, loading: false, time: 0 }; onPullDownRefresh() { // 下拉刷新逻辑 } handleStartRefresh() { // 自动刷新 } } ``` **用法** 1. 将代码中的 `list` 数据替换为您要展示的数据。 2. 设置页面属性 `pullRefresh` 为 `true`。 3. 在 `onPullDownRefresh` 方法中编写下拉刷新逻辑。 4. 在 `handleStartRefresh` 方法中编写自动刷新逻辑。 **示例演示** 当页面滚动到底部时,会触发 `onReachBottom` 方法,并模拟下拉刷新动画。当数据加载完后, `onPullDownRefresh` 方法会被调用并触发 `setData` 方法更新页面数据。

正文

下拉刷新

(一)onPullDownRefresh方法

模拟器效果展示

demo.gif

实现如下

1、配置下拉选项

demo.json

{
  "pullRefresh": true
}

2、定义下拉方法

demo.js

onPullDownRefresh() {
  //做相应的逻辑处理
},

3、停止下拉

在加载完数据后停止下拉

my.stopPullDownRefresh()

如上案例完整代码如下

demo.axml

<view class="demo">
  <text a:if="{{ list.length == 0 ? true: false }}">没数据?试试下拉刷新😆</text>
  <view a:for="{{ list }}">
    {{item.name}}
  </view>
</view>

demo.less

.demo{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    height: 200px;
    width: 100%;
}

demo.json

{
  "usingComponents": {},
  "styleIsolation": "apply-shared",
  "pullRefresh": true
}

demo.ts

Page({
  data: {
    list: [],
  },
  onLoad() {},
  onPullDownRefresh() {
    this.getList()
  },
  getList() {
    setTimeout(()=>{
      this.setData({
        list: [
          { name: '螺蛳粉', value: 1 },
          { name: '酸辣粉', value: 2 },
          { name: '羊肉粉', value: 3 },
        ],
      })
      my.stopPullDownRefresh()
    },1000)
  },
})

(二)自定义下拉刷新

参考文档:https://blog.csdn.net/qq_42345108/article/details/124321126

自动刷新

(一)my.startPullDownRefresh() 方法

效果

demo3.gif

调用 my.startPullDownRefresh 后触发下拉刷新动画,效果与用户手动下拉刷新一致(会触发 onPullDownRefresh 监听方法)。

当处理完数据刷新后,my.stopPullDownRefresh 可停止当前页面的下拉刷新。

如上案例完整代码如下

demo.axml

<view class="demo">
  <block a:if="{{ list.length == 0 ? true: false }}">
    <view a:if="{{ time==0 ? true:false }}" class="button" onTap="handleStartRefresh">
      开启自动刷新
    </view>
    <view a:else>
      {{time}}秒后自动刷新
    </view>
  </block>
  <view a:else class="list">
    <text>刷新成功😆</text>
    <view a:for="{{ list }}"> {{item.value}}碗---{{item.name}}</view>
  </view>
</view>

demo.less

.demo {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  padding-top: 60px;
  .button {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100px;
    height: 40px;
    border-radius: 20px;
    color: #FFFFFF;
    background: #FFA336;
  }
  .list{
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}

demo.json

{
  "usingComponents": {},
  "styleIsolation": "apply-shared",
  "pullRefresh": true
}

demo.ts

Page({
  data: {
    list: [],
    loading: false,
    time: 0,
  },
  onPullDownRefresh() {
    this.setData({
      list: [
        ...[...Array(10)].map((_, i) => ({
          value: i + 1,
          name: '螺蛳粉',
        })),
      ],
    })
    my.stopPullDownRefresh()
  },
  handleStartRefresh() {
    this.setData({
      time: 5,
    })
    setInterval(() => {
      if (this.data.time == 1) {
        my.startPullDownRefresh()
        return
      }
      this.setData({
        time: this.data.time - 1,
      })
    }, 1000)
  },
})

参考文档:https://opendocs.alipay.com/mini/api/ui-pulldown

上拉加载

(一)onReachBottom方法

onReachBottom在上拉触底时触发

模拟器效果展示

demo2.gif

如上案例完整代码如下

demo.axml

<view class="demo">
  <view>
    没看够?试试上拉加载😆
  </view>
  <view a:for="{{ list }}">
    {{item.value}}碗-----{{item.name}}
  </view>
  <view a:if="{{ loading }}" class="loading">
    正在加载中~~🌻
  </view>
</view>

demo.less

.demo{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    padding-bottom: 30px;
    .loading{
        margin-top: 8px;
    }
}

demo.ts

Page({
  data: {
    list: [
      ...[...Array(10)].map((_, i) => ({
        value: i + 1,
        name: '螺蛳粉',
      })),
    ],
    loading: false,
  },
  onReachBottom() {
    this.setData({
      loading: true,
    })
    const data = [
      ...[...Array(30)].map((_, i) => ({
        value: i + this.data.list.length + 1,
        name: '螺蛳粉',
      })),
    ]
    setTimeout(() => {
      this.setData({
        list: this.data.list.concat(data),
        loading:false
      })
    }, 2000)
  },
})

参考文档:https://opendocs.alipay.com/mini/framework/page-detail#onReachBottom()

(二)scroll-view组件的onScrollToLower方法

<scroll-view scroll-y="{{true}}" onScrollToLower="handleScrollToLower" style="height:100px">
    <view a:for="{{ list }}">
      {{item.value}}碗-----{{item.name}}
    </view>
  </scroll-view>
 handleScrollToLower() {
    //加载数据,做数据处理
  },

注:scroll-view必须 设置高度

与支付宝小程序 | 下拉刷新、自动刷新、上拉加载 相似的内容:

支付宝小程序 | 下拉刷新、自动刷新、上拉加载

下拉刷新 (一)onPullDownRefresh方法 模拟器效果展示 实现如下 1、配置下拉选项 demo.json { "pullRefresh": true } 2、定义下拉方法 demo.js onPullDownRefresh() { //做相应的逻辑处理 }, 3、停止下拉 在加载完数据

支付宝小程序 | 自定义标题导航栏

效果 一 、page.json "transparentTitle": "always" 二、page.axml

支付宝小程序 | 获取网络状态

追光者终将光芒万丈

支付宝小程序 | 上传图片组件(添加默认样式以及自定义上传样式)

人们害怕他们不理解的东西。 People are afraid of what they don't understand.

uniapp微信小程序转支付宝小程序踩坑(持续更新)

首先第一个,真有被折磨到! // 微信正常使用,支付宝不行 // 以下两种 微信、支付宝都正常使用

电子钱包小程序:技术与便捷的完美融合

随着移动支付的快速普及,支付宝、微信支付等电子钱包 App 成为了我们日常生活中不可或缺的一部分,手机充值、生活缴费、便利店付款等场景都离开不了。但是也逐步发现,电子钱包 App 们为了提供更加便捷的支付体验和功能,他们有一个共性就是都在往小程序线路发展。

支付宝接入技术

准备工作:去支付宝开放平台准备好以下东西 // 沙箱应用私钥(private key) private String shaxiang_app_private_Key = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDX0zMqoLHjndD

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

本文转载自支付宝体验科技,作者是蚂蚁集团客户端工程师博欢,介绍了支付宝如何基于 HarmonyOS 4.0 实况窗实现医疗场景履约智能提醒。 1.话题背景 8 月 4 日,华为在 HDC(华为 2023 开发者大会)上推出了新版本操作系统HarmonyOS 4.0,主打个性化与多元化的的口号。在功能

面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

我将以面试官的角度来提问一些支付相关的问题,并做出回答,让你对企业中支付的全貌有个大概的认知,这里面有一个问题是我面试别人问过的,xdm看完了可以猜一猜是哪个。

一套基于 .NET Core 开发的支付SDK集 - paylink

前言 在我们的日常工作开发中对接一些第三方支付是比较常见的,如最常见的就是支付宝、微信支付的对接。今天给大家推荐一个基于.NET Core开发的支付SDK集:paylink,它极大简化了API调用及通知的处理流程从而大大提供我们的工作生产效率。 运行环境 .NET Core 3.1、.NET 6.0