vue3 のストアを使用してスクロール位置を記録する例

vue3 のストアを使用してスクロール位置を記録する例

全体的な効果

ホームページリストをスクロールして詳細ページに入ると、ホームページに戻ったときに以前に閲覧した場所に戻ることができます。

コンテナのスクロールイベントをリッスンする

スクロール イベントを定義し、それをコンテナーのスクロール イベントにバインドします。ここではいくつかの調整を行いました。

定数savePosY = () => {
      if(state.timer) 戻り値;
      state.timer = setTimeout(() => {
        ノードを document.querySelector(".contentWrapper"); にします。
        //スクロール位置を記録するstore.commit("setY",node.scrollTop)
        状態.タイマー = null;
        タイムアウトをクリアします(state.timer);
      },100)

イベントをバインドするためにコンテナをマウントする

マウント時(() => {
    contentWrapper を document.querySelector(".contentWrapper"); とします。
    contentWrapper.addEventListener("スクロール",savePosY);
})

ストア内の構成

ストアは比較的単純で、1つの状態yと突然変異setYのみを含みます。

エクスポートデフォルト{
    州:{
         年:0
    },
    突然変異:
        setY(状態,値){
            状態.y = 値;
        }
    }
}

ページが戻るときのスクロール位置を取得する

また、onMountedで操作しないとコンテナ要素を取得できず、VueのDOMは非同期でレンダリングされるため、有効にするにはnextTickで操作する必要があります。

nextTick(() => { contentWrapper.scrollTop = store.state.y; })

やっと

上記がこの記事の全内容です。何か間違っている点やより良い方法があれば、ぜひご意見をお寄せください。

上記は、vue3 が store を使用してスクロール位置を記録する例の詳細です。vue でスクロール位置を記録する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vueのキープアライブはリフレッシュせずにスクロール位置を保持します
  • Vueがスクロール位置を設定できない問題を解決する
  • Vue で詳細ページに入るときにスクロール位置を記憶する方法 (キープアライブ)
  • vue2.0 ルート切り替え後にページスクロール位置が変わらないバグの解決方法
  • Vue スクローラーはスクロール位置を記憶するためにページを返します。サンプルコード
  • スクロール位置を記録するための vue-scroller サンプルコード
  • Vueページの固定スクロール位置の問題を解決する方法

<<:  MySQLにログインする際のエラー「ERROR 1045 (28000)」を解決する方法

>>:  Docker コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)

推薦する

IE6 フォントを定義できません: 13px サイズは無効です。IE6 は自動的に大きいフォント ソリューションを表示します。

数日前、Web ページのモジュールを調整していたとき、ページのフォント サイズを 13px に設定し...

CSS の 6 つの重要なセレクター (3 秒で覚える)

出典: https://blog.csdn.net/qq_44761243/article/deta...

よく使われるシングルページアプリケーションウェブサイト共有

CSS3お願いしますこのウェブサイトを自分で見て、パラメータを変更し、CSS3効果をオン/オフにする...

vue-routerのマッチングに基づいてパンくずリスト機能を実現する

この記事では主にvue-routerのmatchedをベースにしたbreadcrumb機能を紹介し、...

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

CSSはcalc()を使用して現在の表示画面の高さを取得します

まず、CSS3 の相対的な長さの単位を見てみましょう (詳細なチュートリアルを参照してください)。相...

MySQL 集計関数のネストされた使用操作

目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...

シンプルなデータ応答システムを実装する

目次1. デップ2. 観察者を理解する3. 監視と観察者を理解する4. トリガーの依存性5. プロセ...

CSSはヒントボックス、バブルボックス、三角形を作成します

場合によっては、ページにプロンプ​​ト ボックスやバブル ボックスが必要になることがあります。CSS...

MySQLデータベースのリアルタイムバックアップの知識ポイントを詳しく解説

序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

CSS トップに戻る コード例

最近のウェブサイトのほとんどはページが長く、4 画面または 5 画面の長さのものもあれば、2 画面ま...

MySQL トリガーの追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL トリガーの追加、削除、変更、およびクエリ操作について説明しま...

EclipseのプロジェクトをTomcatに追加できない問題を解決する方法

1. プロジェクトを右クリックしてプロパティを選択します2. プロジェクトファセットをクリック3. ...

Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...