ミニ プログラムでは、onLoad ライフ フックはページの作成時に 1 回だけ呼び出されます。navigateTo ページ ジャンプを実行した後、上位レベルのページに戻ります。navigateTo ジャンプは現在のページを非表示にするだけなので、onLoad ライフ フックはフックは上位ページに戻ったときに呼び出されます。再度実行されることはありません。ページを高速に表示できる利点がありますが、onLoad 内のリクエスト データはリアルタイムに更新されません。このとき、ページ データを手動で更新するには、プルダウン更新操作が必要です。次に、この記事では、ミニ プログラムでプルダウン更新を実装する 3 つの方法を紹介します
この形式のプルダウン更新の利点は、明らかにシンプルで制限がないことですが、欠点も明らかです。
<scroll-view> <view>content</view> </scroll-view>
##カスタマイズされたドロップダウン更新
<view> <view> <view></view> <text>{{state === 0 ? '下拉刷新' : state === 1? '松开刷新' : '刷新中'}}</text> </view> <view> <slot></slot> </view> </view>
wxss:
.animation { display: flex; justify-content: center; align-items: center; width: 100%; height: 150rpx; margin-bottom: -150rpx; background-color: #fff; } .loading { width: 30rpx; height: 30rpx; border:6rpx solid #333333; border-bottom: #cccccc 6rpx solid; border-radius: 50%; animation:load 1.1s infinite linear; } @keyframes load{ from{ transform: rotate(0deg); } to{ transform: rotate(360deg); } } .tip { margin-left: 10rpx; color: #666; }
js:
let lastY = 0 // 上一次滚动的位置 let scale = 750 / wx.getSystemInfoSync().windowWidth // rpx转化比例 Component({ options: { multipleSlots: true }, data: { scrollTop: 0, translateHeight: 0, // 平移距离 state: -1 }, properties: { // 触发下拉刷新的距离 upperDistance: { type: Number, value: 150 } }, methods: { // 监听滚动,获取scrollTop onPageScroll (e) { this.data.scrollTop = e.scrollTop }, touchStart (e) { lastY = e.touches[0].clientY }, touchMove (e) { let clientY = e.touches[0].clientY let offset = clientY - lastY if (this.data.scrollTop > 0 || offset this.data.upperDistance) { this.data.state = 1 } this.setData({ translateHeight: this.data.translateHeight, state: this.data.state }) }, touchEnd (e) { if (this.data.translateHeight - this.data.scrollTop * scale > this.data.upperDistance) { this.setData({ translateHeight: 150 }) this.triggerEvent('scrolltoupper') this.setData({ state: 2 }) } else if (this.data.scrollTop { wx.pageScrollTo({ scrollTop: 0, duration: 0 }) }) } } })
<header></header> <refresh-scroll> <view>{{item}}</view> </refresh-scroll>
Page({ data: { list: [] }, onLoad: function () { this.refreshScroll = this.selectComponent('#refreshScroll') for (let i = 0; i { wx.hideLoading() }, 1000) }, refresh: function (e) { setTimeout(() => { this.refreshScroll.stopRefresh() }, 1000) } })
Android:
実機でテストしたところ、パフォーマンスはかなり良好でした。もちろん、これはカスタム プルダウン更新の単純なコンポーネントの例にすぎません。実際のプロジェクトで使用するには、まだ自分で改良する必要があるかもしれません。結局のところ、人によってアプリケーション シナリオは異なります。ここでは単なるアイデアにすぎません。
推奨チュートリアル: 「
以上がミニプログラムのドロップダウン更新の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。