nookies
v2.5.2
مجموعة من مساعدي ملفات تعريف الارتباط لـ Next.js
يعمل إعداد ملفات تعريف الارتباط وتدميره أيضًا على جانب الخادم.
yarn add nookies
يمكنك اللعب مع رمز المثال هنا.
import nookies from 'nookies'
export default function Me ( ) {
return < div > My profile </ div >
}
export async function getServerSideProps ( ctx ) {
// Parse
const cookies = nookies . get ( ctx )
// Set
nookies . set ( ctx , 'fromGetInitialProps' , 'value' , {
maxAge : 30 * 24 * 60 * 60 ,
path : '/' ,
} )
// Destroy
// nookies.destroy(ctx, 'cookieName')
return { cookies }
} import { parseCookies , setCookie , destroyCookie } from 'nookies'
function handleClick ( ) {
// Simply omit context parameter.
// Parse
const cookies = parseCookies ( )
console . log ( { cookies } )
// Set
setCookie ( null , 'fromClient' , 'value' , {
maxAge : 30 * 24 * 60 * 60 ,
path : '/' ,
} )
// Destroy
// destroyCookie(null, 'cookieName')
}
export default function Me ( ) {
return < button onClick = { handleClick } > Set Cookie </ button >
} const express = require ( 'express' ) ;
const dev = process . env . NODE_ENV !== 'production' ;
const app = next ( { dev } ) ;
const handle = app . getRequestHandler ( ) ;
const { parseCookies , setCookie , destroyCookie } = require ( 'nookies' ) ;
app . prepare ( )
. then ( ( ) => {
const server = express ( ) ;
server . get ( '/page' , ( req , res ) => {
// Notice how the request object is passed
const parsedCookies = parseCookies ( { req } ) ;
// Notice how the response object is passed
setCookie ( { res } , 'fromServer' , 'value' , {
maxAge : 30 * 24 * 60 * 60 ,
path : '/page' ,
} ) ;
// destroyCookie({ res }, 'fromServer');
return handle ( req , res ) ;
} ) ;
) ; للاستخدام جانب العميل ، حذف معلمة
ctx. يمكنك القيام بذلك عن طريق تعيينه على كائن فارغ ({}) ، لا ،nullأوundefined.
parseCookies(ctx, options) أو nookies.get(ctx, options)Next.js context || (Express request object)a custom resolver function (default: decodeURIComponent)setCookie(ctx, name, value, options) أو nookies.set(ctx, name, value, options)لا تنسى إنهاء ردك على الخادم باستخدام
res.send().
(Next.js context) || (Express request object)destroyCookie(ctx, name, options) أو nookies.destroy(ctx, 'token', options)لا تنسى إنهاء ردك على الخادم باستخدام
res.send(). قد يكون هذا هو السبب في عدم إزالة ملف تعريف الارتباط الخاص بك.
(Next.js context) || (Express response object)معهد ماساتشوستس للتكنولوجيا