[解決済み] react-routerでユーザーのページ離脱を検知する。
2022-04-22 10:23:58
質問
ReactJSアプリで、特定のページから移動したときにユーザーに通知したいのです。具体的には、ある行動をするように思い出させるポップアップメッセージを表示します。
"変更は保存されましたが、まだ公開されていません。今すぐ実行しますか?"。
このトリガーは
react-router
それとも、reactのページ/コンポーネントの中から行うことができるものでしょうか?
後者については何も見つかっていませんし、前者については避けたいと思っています。もちろん、それが普通でない限り、ですが、そうなると、ユーザーが行く可能性のある他のすべてのページにコードを追加することなく、そのようなことを行うにはどうすればよいのかが気になります...
どんな洞察でも歓迎します、ありがとうございます
解決方法は?
react-router
v4 では、ナビゲーションをブロックする新しい方法として
Prompt
. これをブロックしたいコンポーネントに追加するだけです。
import { Prompt } from 'react-router'
const MyComponent = () => (
<>
<Prompt
when={shouldBlockNavigation}
message='You have unsaved changes, are you sure you want to leave?'
/>
{/* Component JSX */}
</>
)
これはあらゆるルーティングをブロックしますが、ページのリフレッシュやクローズはブロックしません。これをブロックするには、これを追加する必要があります(適切なReactライフサイクルで必要に応じて更新します)。
componentDidUpdate = () => {
if (shouldBlockNavigation) {
window.onbeforeunload = () => true
} else {
window.onbeforeunload = undefined
}
}
オンビフォーアンロード は、ブラウザによって様々な対応がなされています。
関連
-
[解決済み] reactでonloadを使うには?
-
[解決済み] Webpack + Babelです。プリセット "es2015 "がディレクトリに相対して見つからなかった
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React-routerのURLを更新したり、手動で書き込んだりするとうまくいかない
-
[解決済み] React Router v4で履歴にプッシュする方法は?
-
[解決済み] react-router - ハンドラコンポーネントにpropsを渡す
-
[解決済み] React Router v4 - 現在のルートを取得する方法は?
-
[解決済み】オプションのパスパラメータを持つReact Router
-
[解決済み】react router v4 / v5でネストされたルート
-
[解決済み】react-router vs react-router-dom、いつどちらかを使うか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] React テキストを挟んだ横長の仕切りを作る
-
[解決済み] material-ui-pickers KeyboardDatePicker をモーメントで使用するには?
-
[解決済み] formcontrollabel - material-ui | Reactのデフォルトのtypography classを変更するには?
-
[解決済み] ReactJS - SCRIPT1010: 期待される識別子 - IE11 で本番ビルドが実行されない
-
[解決済み] React JSでは、状態を直接変異させない、setState() react/no-direct-mutation-stateを使用する。
-
[解決済み] nginxでcertbotを使用する際の問題点
-
[解決済み] validateDOMNesting警告React
-
[解決済み] は、gatsby-imageで動作する良いreactのカルーセルコンポーネントはありますか?[って聞かれます。]
-
[解決済み] Static HTML elements with event handlers require a role." を修正するにはどうすればよいですか?
-
[解決済み] reactのuseStateフックでコールバックを使う方法 [重複]。