Video thumbnail for ARRÊTE d'utiliser useState, met plutôt le state dans l'URL !

停止使用 useState!將狀態放到 URL 中,更聰明的網頁開發技巧!

Summary

Language:

Quick Abstract

掌握網址狀態管理!建立應用程式時,將狀態保持在 URL 中至關重要。本摘要將探討其優勢,並展示如何使用 Next.js 實現。

精華重點:

  • 可分享性: 用戶可以共享包含篩選器和狀態的特定網址,確保其他人看到相同的內容與介面。

  • 書籤功能: 允許使用者將帶有狀態的 URL 加入書籤,以便日後快速存取。

  • 導覽功能: 使用者可以利用瀏覽器的「上一頁」和「下一頁」按鈕在不同的狀態之間切換。

  • 重新整理: 重新整理頁面後,介面能保持其先前的狀態。

  • 彈性: 技術使用者可直接修改 URL 以調整介面,例如進行資料抓取。

本摘要深入探討了使用 useSearchParams Hook 及 Nux 等工具進行最佳實作,以簡化程式碼並確保資料類型安全。了解如何在 Next.js 應用程式中有效地管理網址狀態,提升使用者體驗!

在開發應用程式時,將應用程式狀態保存在 URL 中是一個重要的考量因素。本篇文章將探討在 URL 中保存狀態的優點,並提供實作指南,以便開發者能更有效地管理應用程式狀態。

為何要在 URL 中保存應用程式狀態?

共享與書籤

  • 方便共享: 用戶可以輕鬆分享帶有特定狀態的網站連結,確保接收者看到完全相同的內容和使用者介面。

  • 方便書籤: 用戶可以將帶有特定狀態的 URL 加入書籤,以便日後快速恢復到該狀態。

  • 瀏覽歷史: 用戶可以使用瀏覽器的「上一頁」和「下一頁」按鈕來導覽不同的狀態。

其他優點

  • 重新整理: 用戶在重新整理頁面後,仍能保持相同的狀態,避免重置所有設定。

  • URL 操作: 進階用戶可以直接修改 URL,以達到特定的狀態或進行數據抓取。

實作指南:使用 Next.js 保持 URL 狀態

以下將以 Next.js 為例,介紹如何將應用程式狀態保存在 URL 中。

基礎程式碼

假設我們有一個包含 select color 元件的頁面,此元件用於選擇顏色。

// Select Color 元件 (簡化範例)
function SelectColor() {
  // ...
  return (
    // ...
  );
}

初始設定:使用 useSearchParams

Next.js 提供了 useSearchParams Hook,可以輕鬆存取和修改 URL 中的查詢參數。

import { useSearchParams } from 'next/navigation';

function Page() {
  const searchParams = useSearchParams();
  const color = searchParams.get('color');

  // ...
}

修改 URL:使用 router.push

要修改 URL,可以使用 router.push 方法。這會更新 URL,並觸發頁面重新渲染。

import { useRouter } from 'next/navigation';

function SelectColor() {
  const router = useRouter();

  const handleColorChange = (newColor) => {
    router.push(`?color=${newColor}`, { scroll: false }); // scroll: false 防止捲動
  };

  // ...
}

進階技巧:使用 nux-query-state

nux-query-state 是一個方便的 Hook,可以更簡潔地管理 URL 中的狀態。

  1. 安裝: 安裝 nux-query-state 套件。
  2. 設定: 在佈局檔案中加入 NX Adaptor
  3. 使用: 使用 useQueryState Hook 宣告狀態變數。
import { useQueryState } from 'nux-query-state';

function Page() {
  const [color, setColor] = useQueryState('color', {
    shallow: false, // 觸發伺服器端請求
  });

  const handleColorChange = (newColor) => {
    setColor(newColor);
  };

  // ...
}

伺服器端驗證與快取

為了確保資料的有效性,可以使用 createSearchParamsCache 建立伺服器端快取,並驗證查詢參數。

import { createSearchParamsCache } from 'nux-query-state';
import { z } from 'zod';

const searchParamsCache = createSearchParamsCache({
  q: z.string().optional(),
  color: z.enum(['red', 'blue', 'green', 'all']).optional(),
  size: z.enum(['S', 'M', 'L']).optional(),
});

export default function Page({ searchParams }) {
  const parsedParams = searchParamsCache.parse(searchParams);
  const color = parsedParams.color;

  // ...
}

總結

將應用程式狀態保存在 URL 中可以提高使用者體驗,並簡化共享和書籤流程。通過使用 Next.js 的 useSearchParams Hook 或 nux-query-state 等工具,開發者可以更輕鬆地管理 URL 中的狀態,並創建更強大和易於使用的應用程式。

Was this summary helpful?

Quick Actions

Watch on YouTube

Related Summaries

No related summaries found.

Summarize a New YouTube Video

Enter a YouTube video URL below to get a quick summary and key takeaways.