ホームページ > 記事 > WeChat アプレット > ミニプログラムのドロップダウン更新の問題
ミニ プログラムでは、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 }) }) } } })このプルダウン更新コンポーネントで最も重要なことは、スタイル ファイルのタイミングを制御することです。プルダウン リフレッシュの場合、コードは upperDistance を定義することによって具体化され、プルダウン リフレッシュ距離はリフレッシュを実行するかどうかを決定するために使用されます。指をスライドさせると、スライド距離を取得し、translateHeight を蓄積して表示します touchEnd イベントで、スライド距離が設定値に達したかどうかを判定します 設定値に達すると、scrolltoupper イベントを送信して表示することができますそれ以外の場合は、更新が停止されます。
<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 サイトの他の関連記事を参照してください。