ð«ãNext.jsãã¿ã€ããŒå®è¡äžã« Link é·ç§»ããŠããŸãåé¡ãšãã®è§£æ±ºç
æçš¿æ¥: 2025幎05æ07æ¥
Next.js ã¢ããªã§ãåŠç¿ã¿ã€ããŒãã䜿ã£ãŠèšé²ãåã£ãŠããéã«ããŠãŒã¶ãŒãããŒãžé·ç§»ããã©ãŠã¶ãªããŒããæ»ãæäœãªã©ãããŠããŸããšãèšé²ã倱ãããŠããŸããªã¹ã¯ããããŸãã
ãã®ããã**ããã²ãŒã·ã§ã³ã¬ãŒãïŒç§»ååã®ç¢ºèªãã€ã¢ãã°ïŒ**ãå®è£ ããŠãã¿ã€ããŒå®è¡äžã®äžæãªæäœã鲿¢ããŠããŸããã
ãããâŠ
<Link href="/user/learning-history">åŠç¿å±¥æŽ</Link>
ã®ãã㪠Next.js ã® <Link> ã䜿ã£ãé·ç§»ã§ã¯ã
ãã£ã³ã»ã«ãæŒããŠãããŒãžé·ç§»ãçºçããŠããŸãåé¡ãèµ·ããŠããŸããã
Next.js ã® <Link> ã¯å éšã§ router.push(href) ãå³åº§ã«å®è¡ããŠããããã
document.addEventListener("click", ...) ã e.preventDefault() ã䜿ã£ãŠããã€ãã³ãã®ãã£ã³ã»ã«ãéã«åããªãã®ã§ãã
ãã®çµæãäžèšã®ãããªã±ãŒã¹ã§é²æ¢ã§ããŸããã§ããã
ã¿ã€ããŒå®è¡äžã« <Link> ãã¯ãªãã¯
確èªãã€ã¢ãã°ã§ããã£ã³ã»ã«ããéžæ
ããã§ãããŒãžé·ç§»ãè¡ãããŠããŸãïŒã¿ã€ããŒãªã»ãããããïŒ
âš ãã€ã³ã
<Link> ã䜿ãããrouter.push(href) ãèªåã§åŒã³åºã
onClick å ã§ ã¿ã€ããŒå®è¡äžãã©ãã ããã§ãã¯
èŠåãã€ã¢ãã°ã衚瀺ããOK ã®å Žåã®ã¿ router.push() ã§é·ç§»
const handleGuardedNav = (href: string) => () => {
if (isLearning) {
const ok = confirm("ã¿ã€ããŒãå®è¡äžã§ãããã®ãŸãŸç§»åãããšåæ¢ãããŸããç¶ããŸããïŒ");
if (!ok) return;
}
router.push(href);
};
<Button onClick={handleGuardedNav("/user/learning-history")}>åŠç¿å±¥æŽ</Button>
AppSidebar ã®ãªã³ã¯ïŒåŠç¿ç®¡çã¡ãã¥ãŒïŒã <Link> ãã router.push() ã«åãæ¿ã
manualNav ãšãããã©ã°ã§éåžžã®ãªã³ã¯ãæåé·ç§»ããåãæ¿ãå¯èœã«
å°æ¥çã«ã«ã¹ã¿ã ã³ã³ããŒãã³ã <GuardedLink /> ãäœæãããã¹ãŠçµ±äžäºå®
Next.js ã® <Link> ã¯äŸ¿å©ã ãã峿é·ç§»ã匷åãããŠãã£ã³ã»ã«äžå¯ãªå Žé¢ããã
éèŠãªåŠçäžïŒã¿ã€ããŒããã©ãŒã èšå ¥äžãªã©ïŒã¯ æåé·ç§» + 確èªãå®å š
router.push() ã䜿ãã°ãé·ç§»ã¿ã€ãã³ã°ãå®å šã«å¶åŸ¡ã§ãã
<GuardedLink> ã³ã³ããŒãã³ããå ±éåããã¬ãŒãããžãã¯ãæœåº
ã°ããŒãã«ãªã¿ã€ããŒç¶æ ïŒisLearningïŒã zustand ãªã©ã§å ±æããã°ããã¹ããŒãã«å¶åŸ¡å¯èœ
ãã®ãããªãNext.js ã®æé»ã®ä»æ§ã«ããæå³ããªãåäœãã¯ãéçºäžã«æ°ä»ãã«ããèœãšã穎ã§ãã
ããããrouter.push() ã«åãæ¿ããããšã§æè»ãªå¶åŸ¡ãå¯èœã«ãªããUX ã®åäžã«ã€ãªãããŸãã
ãã¿ã€ããŒä»ãèšé²ã¢ããªããªã©ãäœã£ãŠããæ¹ã®åèã«ãªãã°å¬ããã§ãïŒ
Webã«ããããã¶ã€ã³ã®ã³ã
ãªãªãžãã«ã¢ããªå¥®éèš
èªåæ ç±å€§éžã-æè¬ãäŒããããšæããæžããŸãã-
å人éçºã®ã¢ãããŒã·ã§ã³ç¶æ(TAã®ãããã)
ã¿ããªçé¢ç®éããïŒãŸãããã粟ç¥ã®ããã
ãŸãããã粟ç¥ã®æ³šæç¹
ã¯ã©ã€ã¢ã³ããµã€ãã§ã ãåäœããã©ã€ãã©ãªãNext.jsã§å°å ¥ãã
ãªãªãžãã«ã¢ããªç¬¬2匟ãCanvasBattleããªãªãŒã¹ïŒ
SNSæçš¿ããŠãã坿¥ãããã話(ãªãªã¢ãæªå®äº)
ãReact Hook FormãuseFormã«æž¡ããŠã¯ãããªãå
åè²ãŠããªãããã£ã³ã¹ãã€ããã 話
å人éçºã®é¡æéžå®ã®ã³ã