Vue は、動的なユーザー インターフェイスを効率的に作成する方法を提供する人気のある JavaScript フレームワークです。 Vue のドキュメントには、プルダウン更新機能という非常に便利な機能があり、これを使用するとユーザーはプルダウン時にページを更新できます。この記事では、この機能の実装プロセスを紹介します。
プルダウン更新を実装するには、v-on と v-bind という 2 つの Vue 命令を使用する必要があります。 v-on ディレクティブはイベントのバインドに使用され、v-bind ディレクティブは属性のバインドに使用されます。
まず、メインの Vue インスタンスでデータ オブジェクトを定義して、更新する必要があるページ上のコンポーネントのステータスを保存する必要があります:
data: { refreshFlag: false, startY: 0, moveY: 0, endY: 0 }
ここで 4 つの変数が定義されています:refreshFlag更新中かどうかを示します。 Status、startY、moveY、endY は、ユーザーのプルダウンの位置情報を記録するために使用されます。
次に、更新する必要があるコンポーネントに v-on および v-bind 命令をバインドします。 v-on ディレクティブは touchstart、touchmove、touchend イベントをバインドするために使用され、v-bind ディレクティブはスタイル クラスをバインドするために使用されます。具体的なコードは次のとおりです。
<div class="scroll" ref="scroll" v-bind:class="{active: refreshFlag}" v-on:touchstart="handleTouchStart" v-on:touchmove="handleTouchMove" v-on:touchend="handleTouchEnd"> <!-- 列表内容 --> </div>
ref 属性は、後続の操作を容易にするためにスクロール要素の DOM オブジェクトを取得するためにここで使用されます。
次に、touchstart、touchmove、touchend イベントにそれぞれ対応する 3 つのイベント処理関数を作成する必要があります。これらの関数では、データ オブジェクト内の変数を変更し、スタイル クラスを更新する必要があります。具体的なコードは次のとおりです。
handleTouchStart(event) { if (this.refreshFlag) { return; } this.startY = event.touches[0].pageY; }, handleTouchMove(event) { if (this.refreshFlag) { return; } this.moveY = event.touches[0].pageY - this.startY; if (this.moveY > 0 && this.moveY < 40) { event.preventDefault(); } if (this.moveY >= 40) { this.refreshFlag = true; } }, handleTouchEnd(event) { if (this.moveY >= 40) { this.refreshFlag = false; this.$emit('refresh'); } this.moveY = 0; }
touchstart イベント処理関数では、ユーザーが画面をクリックしたときの位置を記録し、その後の moveY 値の計算に備えます。
touchmoveイベント処理関数では、ユーザーの指の移動距離に基づいてプルダウンリフレッシュ閾値に達しているかどうかを判定し、到達している場合にはrefreshFlagをtrueに設定します。さらに、デフォルトのスクロール イベントを防ぐには、preventDefault() メソッドを使用する必要があります。
タッチエンド イベント処理関数で、リフレッシュしきい値に達したかどうかを確認します。到達した場合は、リフレッシュ イベントをトリガーし、refreshFlag を false に設定し、moveY を 0 にリセットします。
完全なコードは次のとおりです:
<template> <div> <div class="scroll" ref="scroll" v-bind:class="{active: refreshFlag}" v-on:touchstart="handleTouchStart" v-on:touchmove="handleTouchMove" v-on:touchend="handleTouchEnd"> <!-- 列表内容 --> </div> </div> </template> <script> export default { data: { refreshFlag: false, startY: 0, moveY: 0, endY: 0 }, methods: { handleTouchStart(event) { if (this.refreshFlag) { return; } this.startY = event.touches[0].pageY; }, handleTouchMove(event) { if (this.refreshFlag) { return; } this.moveY = event.touches[0].pageY - this.startY; if (this.moveY > 0 && this.moveY < 40) { event.preventDefault(); } if (this.moveY >= 40) { this.refreshFlag = true; } }, handleTouchEnd(event) { if (this.moveY >= 40) { this.refreshFlag = false; this.$emit('refresh'); } this.moveY = 0; } } } </script> <style scoped> .scroll { height: 300px; overflow: scroll; position: relative; } .active { position: relative; top: 40px; } </style>
コード内で更新イベントがトリガーされることに注意してください。このイベントは、データの再取得とレンダリングのために親コンポーネントの処理関数にバインドできます。 。たとえば、親コンポーネントに次のように記述できます。
<template> <div> <MyComponent v-on:refresh="refreshData" /> </div> </template> <script> export default { methods: { refreshData() { // 重新获取数据 // 更新UI } } } </script>
つまり、上記の方法により、Vue でプルダウンの更新機能を実装できます。この機能は、一部のモバイル Web アプリケーションで非常に役立つだけでなく、デスクトップ Web アプリケーションでのユーザー エクスペリエンスの向上にも役立ちます。
以上がVue ドキュメントのプルダウン更新機能の実装プロセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。