nookies
v2.5.2
Uma coleção de ajudantes de biscoitos para Next.js
Definir e destruir cookies também funciona no lado do servidor.
yarn add nookies
Você pode brincar com o código de exemplo aqui.
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 ) ;
} ) ;
) ; Para uso do lado do cliente, omite o parâmetro
ctx. Você pode fazê -lo configurando -o em um objeto vazio ({}),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ão se esqueça de encerrar sua resposta no servidor com
res.send().
(Next.js context) || (Express request object)destroyCookie(ctx, name, options) ou nookies.destroy(ctx, 'token', options)Não se esqueça de encerrar sua resposta no servidor com
res.send(). Esta pode ser a razão pela qual seu cookie não é removido.
(Next.js context) || (Express response object)Mit