nookies
v2.5.2
Une collection de cookies pour next.js
Le réglage et la destruction des cookies fonctionnent également sur le côté du serveur.
yarn add nookies
Vous pouvez jouer avec l'exemple de code ici.
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 ) ;
} ) ;
) ; Pour l'utilisation côté client, omettez le paramètre
ctx. Vous pouvez le faire en le définissant sur un objet vide ({}),nullouundefined.
parseCookies(ctx, options) ou nookies.get(ctx, options)Next.js context || (Express request object)a custom resolver function (default: decodeURIComponent)setCookie(ctx, name, value, options) ou nookies.set(ctx, name, value, options)N'oubliez pas de mettre fin à votre réponse sur le serveur avec
res.send().
(Next.js context) || (Express request object)destroyCookie(ctx, name, options) ou nookies.destroy(ctx, 'token', options)N'oubliez pas de mettre fin à votre réponse sur le serveur avec
res.send(). C'est peut-être la raison pour laquelle votre cookie n'est pas supprimé.
(Next.js context) || (Express response object)Mit