nookies
v2.5.2
Eine Sammlung von Kekshelfern für Next.js
Das Einstellen und Zerstören von Cookies funktioniert auch auf serverseitig.
yarn add nookies
Sie können hier mit dem Beispielcode spielen.
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 ) ;
} ) ;
) ; Lassen Sie die
ctx-Parameter für clientseitige Nutzung aus. Sie können dies tun, indem Sie es auf ein leeres Objekt ({}),nulloderundefinedeinstellen.
parseCookies(ctx, options) oder nookies.get(ctx, options)Next.js context || (Express request object)a custom resolver function (default: decodeURIComponent)setCookie(ctx, name, value, options) oder nookies.set(ctx, name, value, options)Vergessen Sie nicht, Ihre Antwort auf dem Server mit
res.send()zu beenden.
(Next.js context) || (Express request object)destroyCookie(ctx, name, options) oder nookies.destroy(ctx, 'token', options)Vergessen Sie nicht, Ihre Antwort auf dem Server mit
res.send()zu beenden. Dies könnte der Grund sein, warum Ihr Cookie nicht entfernt wird.
(Next.js context) || (Express response object)MIT