2

ユーザーが戻るボタン (ブラウザー) を押したときにスクロール位置を維持するために、修正しようとしているページがあります。list というコンポーネントがあり、ユーザーにいくつかの製品を表示するとします。すべての製品を表示するには、ユーザーはリスト コンポーネントを下にスクロールできます。ユーザーが製品をクリックすると、アプリケーションはユーザーを詳細コンポーネントにリダイレクトします。次に、ユーザーがリストに戻ろうとしてブラウザの戻るボタンを押すと、リスト コンポーネントがレンダリングされ、自動的に一番上にスクロールするように見えます。

私の知る限り、ブラウザの戻るボタンを押すとwindow.history.back()アクションがトリガーされ、他には何も起こりません。

解決策として、scrollY 値を保存するアプリケーションのコンテキストに変数を実装し、レンダリングしようとしているコンポーネント (リスト コンポーネント) のcomponentWillMount(またはuseEffect) で、スクロール位置を値セットに設定しました。文脈で。

このスタックオーバーフローの投稿にコード全体を基づいているので、私のソリューションの詳細はこちらです: How to change scroll behavior while going back in next js?

いくつかのログを使用して値を確認したところ、スクロール位置はコンテキストに正しく保存されていますが、ウィンドウ イベント リスナーを使用しているため、リスト コンポーネントがレンダリングされた直後に値がゼロに設定されます。

私のコードでは、どのような種類のスクロール構成も使用していないため、その動作が Next.js または react のデフォルトのようなものであるかどうか疑問に思っていました。ユーザーがブラウザの戻るボタンを押したときに発生しますが、私は次の初心者であり、何かが欠けているのか、何が欠けているのかわかりません。この問題が React と関係があるのか​​ どうかさえわかりません。 Next.js 自体。

4

2 に答える 2