ReactにReact-Routerがない場合にナビゲートしたいのですが…
18419 ワード
この場所を見ているとわかります。
Window
Window
Domドキュメントを含むウィンドウ...ドムは?
Document Object Model
ブラウザがHTMLページを認識するように階層化することで,ツリー構造のオブジェクトモデルを形成することが理解できる.
だから直接言いますか?これは私たちが知っているHTMLです.私たちはDomを通じてJSでHTMLのタグにアクセスして修正することができます.
戻ってきて...
JSコードのアクセス可能ウィンドウは、現在スクリプトが実行されているウィンドウを表します.これらの機能は、JSでブラウザの機能にアクセスして制御する場合に、「ウィンドウオブジェクト」(Browser Object Model)によって提供されます.
Window.location
Documentの場所に関する情報が含まれます.ローカルウィンドウから.locationを撮るとlocationに関する情報が表示されますまたここの重要な番組の一つであるpathnameは、コンテンツを表示または表示しません!pathnameには、最初/後のパスが含まれます.
再利用するルーティング
ページを表示するかどうかはpathnameによって異なります.パスが正しくない場合はnullで処理され、空白のページが表示されます.// Route.tsx
import { ReactNode } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
return window.location.pathname === path ? <>{children}</> : null;
};
export default Route;
使用 <Route path="/">
<Component />
</Route>
<Route path="/blank">
<Component />
</Route>
空白ページの後の位置に移動します.
pathnameは空白に印刷されます.
ページ全体のリフレッシュを回避
aタグは、他のURLにリンク可能なハイパーリンクを作成する.また、hrefパスの新しいウィンドウをダウンロードするプロパティは、完全に再表示されます.// Link 컴포넌트를 만들어주자. Link.tsx
import React, { MouseEvent, ReactNode } from "react";
interface LinkProps {
href: string;
children: ReactNode;
}
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
置換URL
ページロードなしで動的にコンテンツを変更できる場合、URLを変更する意味はありますか?これは、ユーザーが特定のページの場所をブックマークに追加し、再度アクセスすることを望んでいるためだけです.URLを手動で更新する方法はhistoryです.pushStateがあります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
console.log(window.location);
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
ログを撮り直しました.現在、Lcoationはローカル/blankとして確認されています.
pathnameももちろん/blankです.もちろん、ページはまだ変わっていません.コースだけ変更しました.
ルートURLが変更されたことを伝える
popstateイベントはwindow'sの履歴変更時に発生します.しかし、MDN PopStateEventではpopstateはpushState()を呼び出すことによって発生しない.だからね.PostateEventオブジェクトを直接生成します.コメントして実行すると、ページは移動しません.
popstateイベントオブジェクトを生成して割り当てる必要があります.イベントオブジェクトを作成した場合は、実行させる必要があります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
const navEvent = new PopStateEvent('popstate');
window.dispatchEvent(navEvent);
...
...
今popstate事件が発生しました!Route.tsに移動し、popstateが発生したときにコールバック関数を登録します.// Route.tsx
import { ReactNode, useEffect, useState } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
// URL 을 추적하고, 변경이 있을시 다시 그려준다.
const [currentPath, setCurrentPath] = useState(window.location.pathname);
useEffect(() => {
const onLocationChange = () => {
setCurrentPath(window.location.pathname);
};
// listen for popstate event
window.addEventListener("popstate", onLocationChange);
// clean up event listener
return () => {
window.removeEventListener("popstate", onLocationChange);
};
}, []);
return currentPath === path ? <>{children}</> : null;
};
export default Route;
よくできています:)React-Routerも使ったことがあります.それよりもっと面白い時間です.以前は早く使いたかったので、簡単な使い方しか知らずに使ってしまったのでしょうか?アリスAIはコースを始めた.彼は、工事は手段と方法を問わず重要だと言った.いきなり言った言葉ですが、この文章を整理して感じた点だけです.
Reference
この問題について(ReactにReact-Routerがない場合にナビゲートしたいのですが…), 我々は、より多くの情報をここで見つけました
https://velog.io/@malza_0408/React-에서-router-없이-Navigation-해보고-싶었다
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Documentの場所に関する情報が含まれます.ローカルウィンドウから.locationを撮るとlocationに関する情報が表示されますまたここの重要な番組の一つであるpathnameは、コンテンツを表示または表示しません!pathnameには、最初/後のパスが含まれます.
再利用するルーティング
ページを表示するかどうかはpathnameによって異なります.パスが正しくない場合はnullで処理され、空白のページが表示されます.// Route.tsx
import { ReactNode } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
return window.location.pathname === path ? <>{children}</> : null;
};
export default Route;
使用 <Route path="/">
<Component />
</Route>
<Route path="/blank">
<Component />
</Route>
空白ページの後の位置に移動します.
pathnameは空白に印刷されます.
ページ全体のリフレッシュを回避
aタグは、他のURLにリンク可能なハイパーリンクを作成する.また、hrefパスの新しいウィンドウをダウンロードするプロパティは、完全に再表示されます.// Link 컴포넌트를 만들어주자. Link.tsx
import React, { MouseEvent, ReactNode } from "react";
interface LinkProps {
href: string;
children: ReactNode;
}
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
置換URL
ページロードなしで動的にコンテンツを変更できる場合、URLを変更する意味はありますか?これは、ユーザーが特定のページの場所をブックマークに追加し、再度アクセスすることを望んでいるためだけです.URLを手動で更新する方法はhistoryです.pushStateがあります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
console.log(window.location);
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
ログを撮り直しました.現在、Lcoationはローカル/blankとして確認されています.
pathnameももちろん/blankです.もちろん、ページはまだ変わっていません.コースだけ変更しました.
ルートURLが変更されたことを伝える
popstateイベントはwindow'sの履歴変更時に発生します.しかし、MDN PopStateEventではpopstateはpushState()を呼び出すことによって発生しない.だからね.PostateEventオブジェクトを直接生成します.コメントして実行すると、ページは移動しません.
popstateイベントオブジェクトを生成して割り当てる必要があります.イベントオブジェクトを作成した場合は、実行させる必要があります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
const navEvent = new PopStateEvent('popstate');
window.dispatchEvent(navEvent);
...
...
今popstate事件が発生しました!Route.tsに移動し、popstateが発生したときにコールバック関数を登録します.// Route.tsx
import { ReactNode, useEffect, useState } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
// URL 을 추적하고, 변경이 있을시 다시 그려준다.
const [currentPath, setCurrentPath] = useState(window.location.pathname);
useEffect(() => {
const onLocationChange = () => {
setCurrentPath(window.location.pathname);
};
// listen for popstate event
window.addEventListener("popstate", onLocationChange);
// clean up event listener
return () => {
window.removeEventListener("popstate", onLocationChange);
};
}, []);
return currentPath === path ? <>{children}</> : null;
};
export default Route;
よくできています:)React-Routerも使ったことがあります.それよりもっと面白い時間です.以前は早く使いたかったので、簡単な使い方しか知らずに使ってしまったのでしょうか?アリスAIはコースを始めた.彼は、工事は手段と方法を問わず重要だと言った.いきなり言った言葉ですが、この文章を整理して感じた点だけです.
Reference
この問題について(ReactにReact-Routerがない場合にナビゲートしたいのですが…), 我々は、より多くの情報をここで見つけました
https://velog.io/@malza_0408/React-에서-router-없이-Navigation-해보고-싶었다
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// Route.tsx
import { ReactNode } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
return window.location.pathname === path ? <>{children}</> : null;
};
export default Route;
<Route path="/">
<Component />
</Route>
<Route path="/blank">
<Component />
</Route>
空白ページの後の位置に移動します.pathnameは空白に印刷されます.
ページ全体のリフレッシュを回避
aタグは、他のURLにリンク可能なハイパーリンクを作成する.また、hrefパスの新しいウィンドウをダウンロードするプロパティは、完全に再表示されます.// Link 컴포넌트를 만들어주자. Link.tsx
import React, { MouseEvent, ReactNode } from "react";
interface LinkProps {
href: string;
children: ReactNode;
}
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
置換URL
ページロードなしで動的にコンテンツを変更できる場合、URLを変更する意味はありますか?これは、ユーザーが特定のページの場所をブックマークに追加し、再度アクセスすることを望んでいるためだけです.URLを手動で更新する方法はhistoryです.pushStateがあります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
console.log(window.location);
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
ログを撮り直しました.現在、Lcoationはローカル/blankとして確認されています.
pathnameももちろん/blankです.もちろん、ページはまだ変わっていません.コースだけ変更しました.
ルートURLが変更されたことを伝える
popstateイベントはwindow'sの履歴変更時に発生します.しかし、MDN PopStateEventではpopstateはpushState()を呼び出すことによって発生しない.だからね.PostateEventオブジェクトを直接生成します.コメントして実行すると、ページは移動しません.
popstateイベントオブジェクトを生成して割り当てる必要があります.イベントオブジェクトを作成した場合は、実行させる必要があります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
const navEvent = new PopStateEvent('popstate');
window.dispatchEvent(navEvent);
...
...
今popstate事件が発生しました!Route.tsに移動し、popstateが発生したときにコールバック関数を登録します.// Route.tsx
import { ReactNode, useEffect, useState } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
// URL 을 추적하고, 변경이 있을시 다시 그려준다.
const [currentPath, setCurrentPath] = useState(window.location.pathname);
useEffect(() => {
const onLocationChange = () => {
setCurrentPath(window.location.pathname);
};
// listen for popstate event
window.addEventListener("popstate", onLocationChange);
// clean up event listener
return () => {
window.removeEventListener("popstate", onLocationChange);
};
}, []);
return currentPath === path ? <>{children}</> : null;
};
export default Route;
よくできています:)React-Routerも使ったことがあります.それよりもっと面白い時間です.以前は早く使いたかったので、簡単な使い方しか知らずに使ってしまったのでしょうか?アリスAIはコースを始めた.彼は、工事は手段と方法を問わず重要だと言った.いきなり言った言葉ですが、この文章を整理して感じた点だけです.
Reference
この問題について(ReactにReact-Routerがない場合にナビゲートしたいのですが…), 我々は、より多くの情報をここで見つけました
https://velog.io/@malza_0408/React-에서-router-없이-Navigation-해보고-싶었다
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// Link 컴포넌트를 만들어주자. Link.tsx
import React, { MouseEvent, ReactNode } from "react";
interface LinkProps {
href: string;
children: ReactNode;
}
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
ページロードなしで動的にコンテンツを変更できる場合、URLを変更する意味はありますか?これは、ユーザーが特定のページの場所をブックマークに追加し、再度アクセスすることを望んでいるためだけです.URLを手動で更新する方法はhistoryです.pushStateがあります.
// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
console.log(window.location);
}
return <a href={href} onClick={onClick}>{children}</a>;
};
export default Link;
ログを撮り直しました.現在、Lcoationはローカル/blankとして確認されています.pathnameももちろん/blankです.もちろん、ページはまだ変わっていません.コースだけ変更しました.
ルートURLが変更されたことを伝える
popstateイベントはwindow'sの履歴変更時に発生します.しかし、MDN PopStateEventではpopstateはpushState()を呼び出すことによって発生しない.だからね.PostateEventオブジェクトを直接生成します.コメントして実行すると、ページは移動しません.
popstateイベントオブジェクトを生成して割り当てる必要があります.イベントオブジェクトを作成した場合は、実行させる必要があります.// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
const navEvent = new PopStateEvent('popstate');
window.dispatchEvent(navEvent);
...
...
今popstate事件が発生しました!Route.tsに移動し、popstateが発生したときにコールバック関数を登録します.// Route.tsx
import { ReactNode, useEffect, useState } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
// URL 을 추적하고, 변경이 있을시 다시 그려준다.
const [currentPath, setCurrentPath] = useState(window.location.pathname);
useEffect(() => {
const onLocationChange = () => {
setCurrentPath(window.location.pathname);
};
// listen for popstate event
window.addEventListener("popstate", onLocationChange);
// clean up event listener
return () => {
window.removeEventListener("popstate", onLocationChange);
};
}, []);
return currentPath === path ? <>{children}</> : null;
};
export default Route;
よくできています:)React-Routerも使ったことがあります.それよりもっと面白い時間です.以前は早く使いたかったので、簡単な使い方しか知らずに使ってしまったのでしょうか?アリスAIはコースを始めた.彼は、工事は手段と方法を問わず重要だと言った.いきなり言った言葉ですが、この文章を整理して感じた点だけです.
Reference
この問題について(ReactにReact-Routerがない場合にナビゲートしたいのですが…), 我々は、より多くの情報をここで見つけました
https://velog.io/@malza_0408/React-에서-router-없이-Navigation-해보고-싶었다
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// Link.tsx
const Link = ({ href, children }: LinkProps) => {
const onClick = (event: MouseEvent<HTMLAnchorElement>) => {
event.preventDefault();
window.history.pushState({}, "", href)
const navEvent = new PopStateEvent('popstate');
window.dispatchEvent(navEvent);
...
...
// Route.tsx
import { ReactNode, useEffect, useState } from "react";
interface RouteProps {
path: string;
children: ReactNode;
}
const Route = ({ path, children }: RouteProps) => {
// URL 을 추적하고, 변경이 있을시 다시 그려준다.
const [currentPath, setCurrentPath] = useState(window.location.pathname);
useEffect(() => {
const onLocationChange = () => {
setCurrentPath(window.location.pathname);
};
// listen for popstate event
window.addEventListener("popstate", onLocationChange);
// clean up event listener
return () => {
window.removeEventListener("popstate", onLocationChange);
};
}, []);
return currentPath === path ? <>{children}</> : null;
};
export default Route;
Reference
この問題について(ReactにReact-Routerがない場合にナビゲートしたいのですが…), 我々は、より多くの情報をここで見つけました https://velog.io/@malza_0408/React-에서-router-없이-Navigation-해보고-싶었다テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol