在 Next.js 13 中,新應用程式目錄的引入給元件的渲染方式帶來了重大轉變。預設情況下,app 目錄中的元件被視為伺服器元件,在伺服器上呈現。此預設行為針對效能和資料擷取進行了最佳化,但在客戶端互動方面存在限制。為了解決這個問題,Next.js 13 引入了「use client」指令,該指令明確將元件或檔案指定為客戶端 JavaScript。
如果元件需要與瀏覽器互動(例如,處理點擊等使用者事件,或存取本機儲存),則必須標記為「使用用戶端」。這是因為伺服器元件無法存取瀏覽器 API、事件偵聽器或其他客戶端功能。
諸如 useState、useEffect、useRef 等 Hook 只能在客戶端元件中使用。因此,在使用這些鉤子時,需要用“use client”標記文件或組件。
React 事件處理程序(如 onClick、onChange)需要元件在瀏覽器中運作。因此,該組件應被標記為客戶端組件。
對於需要在客戶端渲染的任何元件,將「use client」放置在檔案頂部:
"use client"; import { useState } from "react"; export default function MyComponent() { const [count, setCount] = useState(0); return ( <div> <p>{count}</p> <button onClick={() => setCount(count + 1)}>Increment</button> </div> ); }
它必須放置在文件的頂部,位於任何導入或其他程式碼之前。
當您將「use client」新增至檔案時,該檔案中的所有元件都將成為用戶端元件,這表示它們將捆綁並在瀏覽器上執行。
建議僅在必要時使用它,因為伺服器元件在效能和資料擷取方面更有效率。
總之,當您想要在預設情況下有利於伺服器端渲染和最佳化的框架中建立客戶端互動元件時,「使用客戶端」指令是必要的。透過將元件明確標記為客戶端,您可以充分利用 React 用戶端功能的全部功能,例如掛鉤和事件處理,同時仍受益於伺服器端渲染的效能優勢。
這種平衡允許開發人員創建高度互動和高效能的 Web 應用程序,根據需要利用伺服器端和客戶端渲染。
以上是了解 Next.js 中的「使用客戶端」指令 13的詳細內容。更多資訊請關注PHP中文網其他相關文章!