im在next.js中是新的。 我想在router.push(/ *另一页* /)
之后获取Cookie在index.js中:
children.attr('href')
在browser.js中:
Router.push('./browse');
答案 0 :(得分:2)
您需要创建2个单独的函数才能从客户端和服务器端获取cookie。我的建议是使用js-cookie
npm软件包在客户端获取cookie。所有这些在一起:
// utils/cookie.js
import cookie from 'js-cookie';
const getCookieFromBrowser = key => cookie.get(key);
const getCookieFromServer = (key, req) => {
if (!req.headers.cookie) return false;
const rawCookie = req.headers.cookie
.split(';')
.find(c => c.trim().startsWith(`${key}=`));
if (!rawCookie) return false;
const [, token] = rawCookie.split('=');
if (!token) return false;
return token;
};
export const getCookie = (key, req) => {
if (process.browser) return getCookieFromBrowser(key);
return getCookieFromServer(key, req);
};
// component
import React from 'react';
import { getCookie } from './utils/cookie'
const Page = (props) => <h1>Page</h1>;
Page.getInitialProps = ({ req, res }) => {
const token = getCookie('token', req);
console.log(token)
};
export default Page;