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 コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)

推薦する

WeChat アプレット計算機の例

WeChatアプレット計算機の例、参考までに、具体的な内容は次のとおりです。インデックス.wxml ...

VMware での Ubuntu Docker のインストール (コンテナ構築)

1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...

MySQL でのバイナリ型操作

この記事は主にMySQLデータベースのバイナリ型操作を紹介し、具体的な内容を通して紹介します。MyS...

Nginx の動的および静的分離実装ケースのコード分析

静的と動的の分離動的リクエストと静的リクエストはミドルウェアを通じて分離され、不要なリクエストの消費...

JSの高階関数5つを共有する

目次1. はじめに2. 再帰3. コールバック関数3.1 匿名コールバック関数3.2 パラメータ付き...

mysql8でルートユーザーのパスワードをリセットする手順を完了します

序文最近、多くの新しい同僚がこの質問をしてきました。特に、homebrew を通じて自動的にインスト...

マインスイーパゲームを実装するための jQuery プラグイン (2)

この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに...

MySQL EXPLAIN出力列の詳細な説明

1. はじめにEXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情...

ウェブサイト標準の検証方法を通じてFlashページを共有する方法

1. 埋め込みは違法です<embed> タグは Netscape のプライベート タグで...

JavaScript Promise の徹底解説

目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...

UbuntuにMySQLデータベースをインストールする方法

Ubuntu は、Linux をベースにした無料のオープンソース デスクトップ PC オペレーティン...

MySQL テーブル内の重複データを検索して削除する方法の概要

時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...

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

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

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...

Dockerとイメージの操作方法

ミラーを探すDocker Hubのウェブサイトからイメージを検索できます。Docker Hubのウェ...