scrpll-view コンポーネントを使用して uniapp でプルダウン更新を実装する方法
scrpll-view コンポーネントを使用して uniapp でプルダウン更新を実装するにはどうすればよいですか?次の記事では、スクロールビューを使用して uniapp のプルダウンの更新をカスタマイズする方法を紹介します。
#uniapp プルダウン更新
uniapp でのプルダウン更新には 2 つの方法があります。1 つは全体的なプルダウン更新では、ページ ライフ サイクル関数 onPullDownRefresh を使用します。もう 1 つは、scrpll-view コンポーネントのカスタム プルダウン更新イベントを使用するローカル プルダウン更新 (カスタム プルダウン更新とも呼ばれます) です。
1. ページ全体を更新します (onPullDownRefresh)
js で onPullDownRefresh 処理関数を定義します (および onLoad、ライフサイクル関数の兄弟など)、ページのユーザー プルダウン更新イベントをリッスンします。[公式ドキュメント]これ以上の紹介はここではありません!今日の焦点は以下です
2. カスタマイズされたページの更新 (スクロールビュー)
コンポーネントで発生した問題
- #ドロップダウンをトリガーできません (トラブルシューティングの原因になります)1. スクロール ビュー コンポーネントはビューでラップされていません。この問題については言及されていません。このコンポーネントのみをラップする外部ビューがない場合、スクロールビュー コンポーネントでイベントをトリガーする方法はありません。 2. スクロールビューの高さは固定ではありません。CSS で高さを設定してください。高さがエリアに表示されます。たとえば、高さを 50vh に設定した場合 (100vh は全画面)をクリックすると、コンポーネント内のコンテンツが表示されます。画面の半分で上下にスクロールするだけです。ページのスクロール バーはトリガーされません。
scroll-view のスクロール バーのみがトリガーされます。高さを決定するのが難しい場合は、 scss(lang=' scss での計算計算')
3. 高値がパーセンテージとして設定されている場合、ドロップダウンはトリガーできません。高値にはを使用できます (計算計算を使用する場合、前後にスペースが必要であることに注意してください) -)。
max-hight を使用できますが、min-hight は使用できません。 。
4.scroll-y が設定されていません - トップまでスクロールしてドロップダウンをトリガーしませんが、表示されているページでドロップダウンをトリガーします公式のデフォルト ページのスクロール バーがどこにあっても、スクロール ビュー ページで上下にスクロールしている限り、ドロップダウン機能がトリガーされ、ユーザー エクスペリエンスが非常に悪くなります。スクロール時にトリガーされる
@scroll
関数を使用して、
scroll-view スクロール バーの位置を取得し、refresher-enabledを制御して、カスタム プルダウンの更新のオンとオフを切り替えます。スクロール ビューのスクロール バーが一番上までスクロールするとき、enable
refresher-enabledが true で、その他の条件が false です。
<template> <view> <scroll-view show-scrollbar="true" style="height: 300px" scroll-y="true" :refresher-enabled="isOpenRefresh" :refresher-triggered="triggered" :refresher-threshold="100" refresher-background="gray" @refresherpulling="onPulling" @refresherrefresh="onRefresh" @refresherrestore="onRestore" @refresherabort="onAbort" @scroll="onScroll" > <view v-if="!isOpenRefresh">别拉了,没有更多了~</view> <view class="item" v-for="(item, index) in dataList" :key="index">{{ item }}</view> </scroll-view> </view> </template>
export default { data() { return { triggered: false, dataList: [], arr: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], page: 0, isOpenRefresh: true // 是否开启下拉 }; }, onLoad() { this._freshing = false; this.getData() }, methods: { dealArray(array, groupNum) { let temp = []; for (let i = 0, len = array.length; i < len; i += groupNum) { temp.push(array.slice(i, i + groupNum)); } return temp; }, // 自定义下拉刷新控件被下拉 onPulling(e) { console.log("onpulling", e); if (e.detail.deltaY < 0) return // 防止上滑页面也触发下拉 this.triggered = true; }, // 自定义下拉刷新被触发 onRefresh() { if (this._freshing) return; this._freshing = true; this.page++; setTimeout(() => { this.triggered = false; this._freshing = false; this.getData(); }, 500); }, // 自定义下拉刷新被复位 onRestore() { this.triggered = 'restore'; // 需要重置 console.error("onRestore"); }, // 自定义下拉刷新被中止 onAbort() { console.error("onAbort"); }, getData() { // 前端模拟分页 let temp = this.dealArray(this.arr, 3) if (this.page > temp.length - 1) { this.isOpenRefresh = false return } this.dataList.push(...temp[this.page]) } }, };
<style> view { text-align: center; } .item:nth-child(odd) { background-color: antiquewhite; } .item:nth-child(even) { background-color: aquamarine; } </style>
[注] スクロールビューのプルダウンを更新すると、ページが上にスライドしてプルダウンがトリガーされます。 inデモ:@refresherpulling="onPulling"
このメソッドは次のとおりです
if (e.detail.deltaY < 0) return// ページが上にスライドしてドロップダウンもトリガーされるのを防ぎます
が表示されます。ページの任意の場所を下にスライドさせると、ドロップダウンがトリガーされます。 . このような問題が発生します。@scrolltoupper="scrolltoupper"
Topping 関数を使用すると、この関数を承認することで問題を解決できます。
// 触顶操作-准入 scrolltoupper() { this.isAllowRefresh = true } // 自定义下拉刷新控件被下拉 onPulling(e) { if (e.detail.deltaY < 0) return if (!this.isAllowRefresh) return; this.isRefresh = true; console.log("onpulling", e); }ログイン後にコピー
@scroll="onScroll"
を使用して
scroll-topの値を監視し、
= にすることもできます。 ==0、つまり頂上に到達したときにトリガーされます!もう一度トリガーしてください!しかし、彼がそれに遭遇したとき、彼はページをスライドしなければなりません、そしてスクロールバーが現れます、そして彼は耳を傾けます!
init中に初期化して、変数が最初に 0 になるようにすることができます。
推奨: 「export default class Index extends mixins(uiMixin) { scrollTop: number = 0 // 监听页面是否滚动 onScroll(e) { this.scrollTop = e.detail.scrollTop } // 自定义下拉刷新被触发 onRefresh() { if (this.scrollTop === 0) { if (this._freshing) return; this._freshing = true; this.page++; setTimeout(() => { this.triggered = false; this._freshing = false; this.getData(); }, 500); } } })ログイン後にコピーuniapp チュートリアル 」
以上がscrpll-view コンポーネントを使用して uniapp でプルダウン更新を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebStorm で UniApp プロジェクト プレビューを起動する手順: UniApp 開発ツール プラグインをインストールする デバイス設定に接続する WebSocket 起動プレビュー

一般に、複雑なネイティブ機能が必要な場合は uni-app が適しており、シンプルなインターフェイスまたは高度にカスタマイズされたインターフェイスが必要な場合は MUI が適しています。さらに、uni-app は、1. Vue.js/JavaScript のサポート、2. 豊富なネイティブ コンポーネント/API、3. 優れたエコシステムを備えています。欠点は、1. パフォーマンスの問題、2. インターフェースのカスタマイズの難しさです。 MUI には、1. マテリアル デザインのサポート、2. 高い柔軟性、3. 広範なコンポーネント/テーマ ライブラリがあります。欠点は、1. CSS への依存性、2. ネイティブ コンポーネントが提供されない、3. エコシステムが小さいことです。

UniApp は、クロスプラットフォーム開発フレームワークとして多くの便利さを備えていますが、欠点も明らかです。ハイブリッド開発モードによってパフォーマンスが制限され、その結果、開く速度、ページのレンダリング、およびインタラクティブな応答が低下します。エコシステムは不完全で、特定の分野のコンポーネントやライブラリが少ないため、創造性や複雑な機能の実現が制限されています。さまざまなプラットフォームでの互換性の問題により、スタイルの違いや API サポートの一貫性の欠如が発生する傾向があります。 WebView のセキュリティ メカニズムはネイティブ アプリケーションとは異なるため、アプリケーションのセキュリティが低下する可能性があります。複数のプラットフォームを同時にサポートするアプリケーションのリリースと更新には、複数のコンパイルとパッケージが必要となり、開発とメンテナンスのコストが増加します。

uniapp 開発には次の基礎が必要です: フロントエンド テクノロジ (HTML、CSS、JavaScript) モバイル開発の知識 (iOS および Android プラットフォーム) Node.js のその他の基礎 (バージョン管理ツール、IDE、モバイル開発シミュレーター、または実機のデバッグ経験)

UniApp とネイティブ開発のどちらを選択する場合は、開発コスト、パフォーマンス、ユーザー エクスペリエンス、および柔軟性を考慮する必要があります。 UniApp の利点は、クロスプラットフォーム開発、迅速な反復、容易な学習、組み込みプラグインですが、ネイティブ開発はパフォーマンス、安定性、ネイティブ エクスペリエンス、スケーラビリティの点で優れています。特定のプロジェクトのニーズに基づいてメリットとデメリットを比較検討し、UniApp は初心者に適しており、ネイティブ開発は高いパフォーマンスとシームレスなエクスペリエンスを追求する複雑なアプリケーションに適しています。

小規模プログラムの開発に uniapp が推奨するコンポーネント ライブラリ: uni-ui: uni によって公式に作成され、基本コンポーネントとビジネス コンポーネントが提供されます。 vant-weapp: Bytedance によって制作され、シンプルで美しい UI デザインが特徴です。 taro-ui: JD.com によって作成され、Taro フレームワークに基づいて開発されました。 Fish-design: マテリアル デザイン デザイン スタイルを使用して、Baidu によって制作されました。 naive-ui: Youzan によって制作され、モダンな UI デザイン、軽量でカスタマイズが簡単です。

UniApp は Vue.js に基づいており、Flutter は Dart に基づいており、どちらもクロスプラットフォーム開発をサポートしています。 UniApp は豊富なコンポーネントと簡単な開発を提供しますが、そのパフォーマンスは WebView によって制限されます。Flutter は優れたパフォーマンスを備えていますが、開発がより難しいネイティブ レンダリング エンジンを使用します。 UniApp には活発な中国語コミュニティがあり、Flutter には大規模なグローバル コミュニティがあります。 UniApp は、開発が迅速でパフォーマンス要件が低いシナリオに適しており、Flutter は、高度なカスタマイズとパフォーマンスを必要とする複雑なアプリケーションに適しています。
