cookies
cookies
是一個非同步函式,允許您在 伺服器組件 中讀取 HTTP 傳入請求的 Cookie,並在 伺服器動作 或 路由處理器 中讀取/寫入傳出請求的 Cookie。
app/page.tsx
import { cookies } from 'next/headers'
export default async function Page() {
const cookieStore = await cookies()
const theme = cookieStore.get('theme')
return '...'
}
參考
方法
以下方法可用:
方法 | 回傳類型 | 說明 |
---|---|---|
get('name') | 物件 | 接受 cookie 名稱並回傳包含名稱和值的物件。 |
getAll() | 物件陣列 | 回傳所有名稱相符的 cookie 列表。 |
has('name') | 布林值 | 接受 cookie 名稱並根據 cookie 是否存在回傳布林值。 |
set(name, value, options) | - | 接受 cookie 名稱、值和選項,並設定送出的請求 cookie。 |
delete(name) | - | 接受 cookie 名稱並刪除 cookie。 |
clear() | - | 刪除所有 cookie。 |
toString() | 字串 | 回傳 cookie 的字串表示形式。 |
選項
要瞭解更多關於這些選項的資訊,請參閱 MDN 文件
注意事項
cookies
是一個非同步函式,它會回傳一個 promise。您必須使用async/await
或 React 的use
函式來存取 cookies。- 在版本 14 以及更早的版本中,
cookies
是一個同步函式。為了幫助向下相容,您仍然可以在 Next.js 15 中以同步方式存取它,但此行為將在未來版本中被棄用。
- 在版本 14 以及更早的版本中,
cookies
是一個動態 API,其回傳值無法事先得知。在佈局或頁面中使用它會將路由選擇為動態渲染。.delete
方法只能在- HTTP 不允許在串流開始後設定 cookie,因此您必須在 伺服器動作 或 路由處理程式 中使用
.set
。
範例
取得 cookie app/page.tsximport { cookies } from 'next/headers'
export default async function Page() {
const cookieStore = await cookies()
const theme = cookieStore.get('theme')
return '...'
}
app/page.tsx
import { cookies } from 'next/headers'
export default async function Page() {
const cookieStore = await cookies()
const theme = cookieStore.get('theme')
return '...'
}